gpt4 book ai didi

c++ - 使用 CROSSTOOL 构建 ARM 时修剪 Bazel -I 标志

转载 作者:行者123 更新时间:2023-11-28 05:03:02 24 4
gpt4 key购买 nike

我编写了一个自定义 CROSSTOOL 文件,它为我的 Cortex-M 目标调用 arm-gcc 编译器。我通过 -isystem 指定我的标志,包括 sysroot。

我看到 Bazel 使用一堆额外的 -I 标志增强了我对 gcc 的调用。这看起来没问题,b/c Bazel 正在为构建过程中生成的文件添加路径等。

我看到 Bazel 还添加了一个我没有指定的 -isystem:

-isystem external/bazel_tools/tools/cpp/gcc3

我不知道如何让 Bazel 抑制它,因为通过查看唯一出现的“gcc3”in the code , 它看起来像是在尝试引入特定的 STL。

我可以告诉 Bazel 不要添加这个吗?它充其量是无害的,但可能是阴险的。

最佳答案

让我先回答一个更笼统的问题:如何强制 Bazel 停止修补我的 crosstool?这可以通过在您的 crosstool 中定义 no_legacy_features 功能来完成,只需将其放入所有相关的 toolchain 消息中即可:

feature { name: "no_legacy_features" }

有了这个特性,Bazel 不会给你的 crosstool 打补丁,所以它不会添加 -isystem 标志。但它也会停止添加所有其他标志,例如 -D defines、-l libs 等。您可以在 CppActionConfigs 中看到 bazel 添加到您的 crosstool 中的所有内容。 .另一个问题是我现在每天都会引入新特性和新构建变量,所以如果你以后要升级bazel,你肯定需要更新crosstool。如果您不使用 action_configs 并且不定义 no_legacy_features,您的交叉工具将继续工作。最终我在 crosstool 上的工作将会完成并且 crosstool 将会稳定。现在不是这种情况。

现在第二个问题是为什么 bazel 在那里添加 -isystem 标志,我不知道。因此我提交了an issue .

关于c++ - 使用 CROSSTOOL 构建 ARM 时修剪 Bazel -I 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45489789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com