特定GCC主要版本的Bazel选择条件

特定GCC主要版本的Bazel选择条件,bazel,Bazel,我们必须将一个特殊的linkopts标志传递给使用的cc_库规则,特别是针对Debian 10附带的GCC版本(GCC 8.3) 我不想让开发人员在顶层传递一个--config=old\u gcc或类似文件 我希望这样的咒语能奏效: linkopts = select({ "@bazel_tools//tools/cpp:gcc": ["-lstdc++fs"], "//conditions:default": [], }), 但是a)gcc不是se

我们必须将一个特殊的
linkopts
标志传递给使用
cc_库
规则,特别是针对Debian 10附带的GCC版本(GCC 8.3)

我不想让开发人员在顶层传递一个
--config=old\u gcc
或类似文件

我希望这样的咒语能奏效:

    linkopts = select({
       "@bazel_tools//tools/cpp:gcc": ["-lstdc++fs"],
       "//conditions:default": [],
    }),
但是a)gcc不是
select()
可以使用的可配置属性,b)我们更具体地应该测试版本号是8(我们只支持8或更高)


如何提取
是\u gcc8
-类似配置\u设置,我可以使用
为目标选择类似设置?蒂亚

一种方法是改为使用手动交叉工具设置,而不是依赖自动交叉工具设置(文档)。这将允许您指定一组链接器标志,以便在使用
--cpu
--compiler

的特定组合进行编译时应用。我怀疑您在问,我可以根据您从表单自动工具链解析中获得的
gcc
版本选择哪个
配置设置标签。如果是这样,你就不能。自动工具链解析甚至不要求使用
gcc
的版本,更不用说将其公开为
config\u设置。定义不同的/特定的工具链既“正确”,又能提供可利用的东西;廉价(在最初的一次性工作中)和肮脏的选项可能是有一个神奇的工具链,在调用
gcc
的包装器中检查和决定。