(来自https://groups.google.com/d/msg/bazel-discuss/LQfL6c-6Wqg/uinZMCTYCgAJ)
您好 -
是否可以使用bazel使用工具链进行交叉编译,其中编译器标志不是远程类似gcc的?
例如,bazel似乎想/需要使用-MD -MF foo.d,但是我的工具链不支持这些标志,我不知道从编译调用中过滤这些标志的方法
我能想到的唯一一件事就是将CROSSTOOL指向一些包装脚本来解决所有参数。
- 罗布
答案 0 :(得分:2)
理想情况下,CROSSTOOL会封装所有工具链/平台特定的标志,而Bazel不会硬编码任何特定于gcc / linux的标志。我们到了那里,虽然速度比预期慢得多(这是一个非常痛苦的过程)。
所以你应该能够编写自己的crosstool(或生成类似于bazel does it的一个),它不会发出-MD -MF foo.d.由于我们正在迁移许多内部的crosstools,Bazel正试图变得聪明并且会增加你的crosstool缺失的功能。检查CppConfiguration.java和CppLinkActionConfigs.java是否有这些“补丁”。
关于包装器脚本,这就是bazel为MSVC构建所做的工作,将类似gcc的命令行转换为cl.exe样式。我们正在慢慢地从这些脚本中删除逻辑,因为crosstool更强大(例如Bazel @head现在根本不使用包装脚本进行链接)。