簡體   English   中英

使用CROSSTOOL構建ARM時Prune Bazel -I標志

[英]Prune Bazel -I flags when using CROSSTOOL to build ARM

我編寫了一個自定義的CROSSTOOL文件,該文件為我的Cortex-M目標調用arm-gcc編譯器。 我通過-isystem指定我的標志,包括-isystem

我看到Bazel通過一堆額外的-I標志增強了我對gcc的調用。 似乎可以,b / c Bazel正在向構建期間生成的文件添加路徑,等等。

我看到Bazel還添加了一個我未指定的-isystem

-isystem external/bazel_tools/tools/cpp/gcc3

我無法弄清楚如何讓Bazel抑制這種情況,因為通過查看代碼中唯一出現的“ gcc3”,看來它正在嘗試引入特定的STL。

我可以告訴Bazel不要添加它嗎? 充其量是無害的,但可能是陰險的。

首先讓我回答一個更籠統的問題:如何迫使Bazel停止修補我的工具。 這可以通過在您的no_legacy_features中定義no_legacy_features功能來完成,只需將其放入所有相關的toolchain消息中即可:

feature { name: "no_legacy_features" }

使用該功能,Bazel將不會修補您的crosstool,因此不會添加-isystem標志。 但是它也會停止添加所有其他標志,例如-D define,-l libs等。您可以在CppActionConfigs中看到bazel添加到您的crosstool中的所有內容 另一個問題是,我現在每天都會引入新功能和新的構建變量,因此,如果將來要升級bazel,則肯定需要更新crosstool。 如果您不使用action_configs且未定義no_legacy_features ,那么您的no_legacy_features將繼續工作。 最終,我在crosstool上的工作將完成,並且crosstool將保持穩定。 現在不是這種情況。

現在第二個問題是為什么bazel在其中添加了-isystem標志,我不知道。 因此,我提出了一個問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM