首页 > 解决方案 > 如何在 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?).

少了什么东西?

标签: bazel

解决方案


--define标志由config_setting, via专门处理define_values,因为它们是多值的。我认为这会起作用:

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

推荐阅读