有没有办法在select
或某种等效的动态机制中使用Xcode版本值?
这样做的动机是我们必须在我们的管道和开发人员桌面上支持Xcode的多个修订版。当使用相同的构建基础结构支持多个Xcode修订时,需要以编程方式修改用于CFLAGS的命令行参数,例如指定不同的优化,调试和警告标志。例如,我们只想为Xcode 8.3或更高版本指定某些标志。
我看到xcode_toolchain
和xcode_version
有配置片段,但我不相信我可以选择那些。我们不希望告诉bazel它正在使用哪个Xcode版本(出于CFLAGS的目的)或者使用命令行配置规范,或者通过动态生成BUILD
文件,特别是因为Bazel应该已经知道它是哪个版本使用
这种情况是否有更好的推荐方法?
答案 0 :(得分:1)
我看到
xcode_toolchain
和xcode_version
有配置片段,但我不相信我可以选择那些。
你遇到了什么问题?
如果使用xcode_version指定配置设置,例如:
config_setting(
name = "xcode_7_1" + vers,
values = {"xcode_version": "7.1"},
)
你应该可以选择这个。
答案 1 :(得分:0)
您可以使用存储库进行本地自动检测,类似于bazel autodetects c++ toolchain。生成的CROSSTOOL可以为当前主机精确烘焙,而BUILD文件中不需要选择。如果您需要为规则子集显示特定的命令行标志,则可以使用“功能”。可以基于每个规则启用/禁用功能:
cc_library(
name = "foo",
features = [ "foo_flags", "-bar_flags" ]
)
您可能会发现about the CROSSTOOL wiki page有帮助。要获得有关如何编写功能和action_configs的更多示例,请查看CppActionConfigs.java