如何仅在某些文件上忽略诸如 `treat_warnings_as_errors` 之类的 bazel 功能?
How can ignore bazel features like `treat_warnings_as_errors` only on some files?
我的 C++ bazel 构建文件中有一个如下所示的库:
cc_library(
name = "mylib",
srcs = [
"main.cpp",
"file1.cpp",
"file2.cpp",
...
],
hdrs = [
"main.h",
"file1.h",
"file2.h",
...
],
features = [
"treat_warnings_as_errors",
"strict_warnings",
"additional_warnings",
],
deps = [
"my_dependency1",
"my_dependency2",
"third_party_dependency",
...
],
)
我需要将 features
中指定的约束应用于所有源文件,但 file1
使用的 third_party_dependency
除外。
我尝试从 mylib
中删除 file1
,将其放入新库(即 mylib2
),然后将该库作为依赖项添加到 mylib
.唯一的问题是我不希望整个 file1
摆脱约束,只有 third_party_dependency
.
有什么办法吗?
我的解决方案是创建一个新库作为 third_party_dependency
的包装器,以免混淆第三方代码,而在第二个库中,我只需要在头文件中添加 #pragma GCC system_header
这样我的 gcc 编译器就会忽略该文件。
对 How to eliminate external lib/third party warnings in GCC
的编辑
我的 C++ bazel 构建文件中有一个如下所示的库:
cc_library(
name = "mylib",
srcs = [
"main.cpp",
"file1.cpp",
"file2.cpp",
...
],
hdrs = [
"main.h",
"file1.h",
"file2.h",
...
],
features = [
"treat_warnings_as_errors",
"strict_warnings",
"additional_warnings",
],
deps = [
"my_dependency1",
"my_dependency2",
"third_party_dependency",
...
],
)
我需要将 features
中指定的约束应用于所有源文件,但 file1
使用的 third_party_dependency
除外。
我尝试从 mylib
中删除 file1
,将其放入新库(即 mylib2
),然后将该库作为依赖项添加到 mylib
.唯一的问题是我不希望整个 file1
摆脱约束,只有 third_party_dependency
.
有什么办法吗?
我的解决方案是创建一个新库作为 third_party_dependency
的包装器,以免混淆第三方代码,而在第二个库中,我只需要在头文件中添加 #pragma GCC system_header
这样我的 gcc 编译器就会忽略该文件。
对 How to eliminate external lib/third party warnings in GCC
的编辑