如何在OS X上使用bazel设置C++编译器?

9
你如何告诉 bazel 在 OS X 上使用不同的 C++ 编译器?
bazel build --action_env CC=/path/to/compiler //:target

适用于Linux系统。

但是,-s 显示,在OSX上bazel始终使用 external/local_config_cc/wrapped_clang(clang)运行,而不管 CC 是什么。


4
投票关闭这个问题的人,它绝对不是一个不清楚的问题!使用C++和bazel需要编译器进行构建,我正在询问如何在OSX上更改它。 - Ryan Burn
3个回答

8
只有当你使用纯C++工具链时,CC 才能正确工作。如果你已经安装了Xcode,bazel会检测到并自动选择另一个工具链,支持C++和ObjC。这个工具链只能使用Xcode提供的clang。
这很不幸,我提出两种解决方案:
1. 为 bazel 提交一个功能请求,使其可以选择使用哪个工具链。这将允许您告诉 bazel,即使您已经安装了 Xcode,您仍想使用仅支持 C++ 的工具链和自定义编译器。这非常简单,可以在短时间内完成。 2. 为 bazel 提交一个功能请求,使其可以选择使用哪个编译器与 C++/ObjC 工具链一起使用。我无法评论其可行性,因为我对 osx 几乎一无所知,也不知道是否有意义使用未提供 Xcode 的编译器来编译 ObjC...

谢谢。我提交了#4231来跟进(1)。 - Ryan Burn
1
问题已经解决。一旦bazel发布,并且您指定了BAZEL_USE_CPP_ONLY_TOOLCHAIN=1环境变量,bazel将选择C++-only工具链。 - hlopko

8
实际上,使用最新版本的bazel指定...
BAZEL_USE_CPP_ONLY_TOOLCHAIN=1
build --action_env CC=/path/to/compiler  [...]

这段代码确实可以使用指定的编译器。但是,编译器标志仍然存在问题。如果旧编译器的编译器标志与新编译器不兼容,则会出现问题。我还需要找出如何更改编译器标志。


是的,我也注意到了。似乎还有一些工作需要做才能使这个工作流程可用。当使用不同的编译器(例如在 OS X 上使用 gcc 而不是 clang)时,这尤其成为一个问题。 - Ryan Burn

1

4
我真的需要花时间设置自定义的CROSSTOOL文件才能在OSX上使用gcc吗?这似乎对于本应该是一个简单选项而言是过度劳累的工作。 - Ryan Burn
@hlopko:你觉得呢? - László

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接