我有一条带有条件属性的规则:
some_rule(
name = "my_rule",
some_attr = select({
":ts_diagnostics_mode_extended": ["--extendedDiagnostics"]
}),
)
并使用配置设置:
config_setting(
name = "ts_diagnostics_mode_extended",
values = { "define": "ts_diagnostics_mode=extended_diagnostics" }
)
但是,当使用bazel build :my_target --define ts_diagnostics_mode=extended_diagnostics
进行构建时,我得到了
Configurable attribute "some_attr" doesn't match this configuration (would a default condition help?).
缺少什么?
答案 0 :(得分:2)
--define
标志由config_setting
通过define_values
特别处理,因为它们是多值的。我认为这会起作用:
config_setting(
name = "ts_diagnostics_mode_extended",
define_values = { "ts_diagnostics_mode": "extended_diagnostics" }
)
答案 1 :(得分:1)
虽然define_values
确实有效,但您最初使用values
的示例也应该有效。仅当您希望define_values
有多个条目时,才需要config_setting
。
请参见define_values文档中的以下行:
--define
仍可以使用常规标志语法显示在values
中,并且只要字典键保持不同即可与该属性自由混合。