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

rni*_*ckb 7 c++ macos bazel

你怎么能告诉 bazel 在 OS X 上使用不同的 C++ 编译器?

bazel build --action_env CC=/path/to/compiler //:target
Run Code Online (Sandbox Code Playgroud)

在 linux 上工作。

但是-s表明external/local_config_cc/wrapped_clang无论是什么,bazel 总是在 OSX 上运行(clang) CC

hlo*_*pko 7

CC只有当您使用 C++-only 工具链时才能正确工作。如果您安装了 Xcode,bazel 将检测到这一点并自动选择一个不同的工具链,即同时支持 C++ 和 ObjC 的工具链。这个工具链只能使用 Xcode 提供的 clang。

这很不幸,我提出了两种解决方案:

  1. 为 bazel 提交功能请求,以便可以选择使用哪个工具链。这将允许您告诉 bazel 即使您安装了 Xcode,您也希望使用带有自定义编译器的 C++ 工具链。这在短时间内非常简单且可行。
  2. 提交 bazel 的功能请求,以便可以选择与 C++/ObjC 工具链一起使用的编译器。我无法评论它的可行性,我对 osx 几乎一无所知,而且我不知道使用 Xcode 未提供的编译器编译 ObjC 是否有意义...


小智 5

实际上与最新版本的bazel指定

BAZEL_USE_CPP_ONLY_TOOLCHAIN=1
build --action_env CC=/path/to/compiler  [...]
Run Code Online (Sandbox Code Playgroud)

确实有效,因为使用了指定的编译器。但是,编译器标志仍然存在问题。如果旧编译器的编译器标志与新编译器不兼容,则存在问题。我仍然需要找出如何更改编译器标志。