如何在 Bazel 中创建和使用自定义构建标志?



我有一个带有条件属性的规则:

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?).

缺少什么?

--define

标志由config_setting通过define_values专门处理,因为它们是多值的。 我认为这将起作用:

config_setting(
name = "ts_diagnostics_mode_extended",
define_values = { "ts_diagnostics_mode": "extended_diagnostics" }
)

虽然define_values确实有效,但您带有values的原始示例也应该有效。 仅当您希望config_setting具有多个条目时,才需要define_values

请参阅define_values文档中的此行:

--define仍然可以以正常的标志语法出现在values中,并且只要字典键保持不同,就可以与此属性自由混合。

最新更新