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

cdl*_*ary 5 bazel

我们必须向使用 的规则传递一个特殊linkopts标志,特别是针对 Debian 10 (gcc 8.3) 附带的 GCC 版本。cc_library<filesystem>

我不想让开发人员通过一个--config=old_gcc或类似的顶级。

我希望像这样的咒语会起作用:

    linkopts = select({
       "@bazel_tools//tools/cpp:gcc": ["-lstdc++fs"],
       "//conditions:default": [],
    }),
Run Code Online (Sandbox Code Playgroud)

但是 a) gcc 不是select()可以使用的可配置属性b) 我们更具体地说应该测试版本号是 8(我们只支持 8 或更高版本)。

如何提取一个类似is_gcc8的 config_setting 我可以像这样为使用的目标选择<filesystem>?蒂亚!

小智 1

一种方法是更改​​为使用手动 CROSSTOOL 设置,而不是依赖自动 crosstool 设置(文档位于此处)。这将允许您指定一组链接器标志,以在使用--cpu和的特定组合进行编译时应用--compiler