我的项目正在从Bazel过渡到CMake,我将Abseil的快照包含在我们的存储库中的third_party/
顶级目录中。我需要在转换期间支持这两个构建系统,所以我创建了CMakeLists.txt
个文件,并注意到需要禁用相当多的警告才能编译Abseil头。
对于CMake,这没关系,因为我可以使用#include <absl/strings/str_cat.h>
语法包含我使用它们的标题。这告诉我的编译器它是一个系统头并忽略警告,所以我不必全局禁用它们。
对于Bazel来说,我收到了这个错误:
错误:&#39; absl / strings / str_cat.h&#39;找不到包含的文件;使用&#34;报价&#34;代替
有没有办法告诉Bazel允许<>
式的包含?是否有另一种方法可以为这些标题禁用警告而不禁用整个项目?
答案 0 :(得分:0)
默认情况下,bazel不会为编译操作发出任何特定于cc库的include(-I
)目录标志。由于包含查找不是免费的,因此我们依赖于单个根的头层次结构。但是你可以告诉bazel在给定cc_library
上使用includes
添加自定义包含目录。或者,最好使用strip_include_prefix
和include_prefix
。