我编写了一个自定义的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。
我能告诉巴泽尔不要加这个吗?这充其量是无害的,但也可能是阴险的。
发布于 2017-08-05 15:13:29
让我先回答一个更一般的问题:如何迫使Bazel停止修补我的交叉椅?这可以通过在您的交叉栏中定义no_legacy_features特性来完成,只需将以下内容放入所有相关的toolchain消息中:
feature { name: "no_legacy_features" }有了这个功能,Bazel将不会修补您的交叉架,因此它不会添加-isystem标志。但它也将停止添加所有其他标志,如-D定义、-l库等。您可以在CppActionConfigs中看到bazel添加到您的交叉栏中的所有内容。另一个问题是,我现在每天都会引入新的功能和新的构建变量,所以如果你想在未来升级bazel,你肯定需要更新crosstool。如果你不使用action_configs,也不定义no_legacy_features,你的交叉库将继续工作。最终,我在交叉椅上的工作将完成,交叉椅将是稳定的。现在还不是这样。
现在第二个问题是为什么bazel在那里添加-isystem标志,我不知道。因此,我提交了an issue。
https://stackoverflow.com/questions/45489789
复制相似问题