如何从单个Bazel cc_test目标中移除--feature=ABC参数
解决单个Bazel cc_test目标禁用全局feature的方法
无需修改全局CI脚本,可通过以下几种方式实现单个目标排除指定特性:
方法1:直接在cc_test目标中覆盖features属性
Bazel会优先使用目标自身的features配置,覆盖全局通过--feature=ABC传递的参数。只需在目标配置里显式排除ABC特性即可:
cc_test( name = "your_test_target", srcs = ["your_test.cc"], # 用"-特性名"的格式排除指定特性,不影响其他全局特性 features = ["-ABC"], # 其他必要配置(如deps、copts等)... )
方法2:结合config_setting实现条件化排除
如果需要仅在特定环境(比如CI)下排除特性,可通过config_setting和select做条件控制:
# 定义匹配全局--feature=ABC的配置 config_setting( name = "abc_feature_enabled", features = ["ABC"], ) cc_test( name = "your_test_target", srcs = ["your_test.cc"], features = select({ ":abc_feature_enabled": ["-ABC"], "//conditions:default": [], }), # 其他必要配置... )
方法3:针对单个目标追加命令行参数
如果不想修改BUILD文件,可在CI的测试命令中给该目标单独追加--features=-ABC参数,仅对当前目标生效:
bazel test //path/to:your_test_target --features=-ABC
以上三种方案都能精准控制单个cc_test目标禁用全局的ABC特性,无需大范围调整CI脚本。
内容的提问来源于stack exchange,提问作者Guo
相关产品推荐
相关产品推荐

