如何仅在某些文件上忽略诸如 `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

的编辑