Мы переносим проект CMake в Bazel. У нас есть несколько библиотек только с заголовками, которые помечены как SYSTEM в проекте CMake для подавления некоторых предупреждений. При переносе их на Bazel мы можем выполнить эту работу, используя следующую команду
cc_library(
name = "lib",
srcs = ["include/header1.h", ...],
includes = ["include"],
)
Это работает, но согласно документации Bazel C ++ , не рекомендуется иметь заголовки интерфейса / общедоступных в srcs
. Они должны быть частью hdrs
. Добавление их в заголовки не работает, так как вместо -isystem
.
используется обычное включение на основе
-I
.
Является ли наш способ сделать это хорошо, хотя Базель не рекомендует? Если нет, то как правильно это сделать?
EDIT:
После некоторого копания нашел атрибут textual_hdrs
в cc_library
и, используя его, похоже, он тоже работает. И это кажется более чистым подходом, чем добавление общедоступных заголовков к srcs
. Теперь правило выглядит так
cc_library(
name = "lib",
textual_hdrs = ["include/header1.h", ...],
includes = ["include"],
)
Это выглядит как хорошее решение для нас, за исключением того, что документация по textual_hdrs не достаточно ясна, чтобы указать, что это то, для чего она предназначена.
PS: На самом деле мы не можем реорганизовать код для исправления предупреждений, поскольку существует множество подобных библиотек, и они полностью выходят за рамки этого процесса миграции.