如何在Bazel中创建和使用自定义构建标志?
我有一个带有条件属性的规则:如何在Bazel中创建和使用自定义构建标志?,bazel,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_mo
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构建时:我的目标--define ts\u diagnostics\u mode=extended\u diagnostics
I get可配置属性“some\u attr”与此配置不匹配(默认条件是否有帮助?。
缺少什么?--define
标志由config\u setting
通过专门处理,因为它们是多值的。我认为这会奏效:
config_setting(
name = "ts_diagnostics_mode_extended",
define_values = { "ts_diagnostics_mode": "extended_diagnostics" }
)
虽然
define_values
确实有效,但是您的带有values
的原始示例也应该有效<只有当您希望config\u设置
包含多个条目时,才需要使用code>define\u values
请参见文档中的这一行:
--define
仍然可以使用正常的标志语法出现在值中,并且只要字典键保持不同,就可以与此属性自由混合
你说得对。当使用原始示例再次测试时,它仅在包含默认条件时起作用,//conditions:default
。使用定义_值时也是如此。但是,在设置配置中包含默认条件以使其工作似乎有点奇怪。