如何使用 bazel 在 OS X 上设置 C++ 编译器?
How to set c++ compiler on OS X with bazel?
如何告诉 bazel 在 OS X 上使用不同的 C++ 编译器?
bazel build --action_env CC=/path/to/compiler //:target
适用于 linux。
但是 -s
表明无论 CC
是什么,bazel 总是在 OSX 上以 external/local_config_cc/wrapped_clang
(clang) 运行。
CC
仅当您使用仅 C++ 工具链时才能正常工作。如果您安装了 Xcode,bazel 将检测到这一点并自动选择一个不同的工具链,即同时支持 C++ 和 ObjC 的工具链。此工具链只能使用 Xcode 提供的 clang。
这很不幸,我提出两个解决方案:
- 提交 bazel 的功能请求,以便 select 使用哪个工具链。这将允许您告诉 bazel,即使您安装了 Xcode,您也希望将仅 C++ 工具链与自定义编译器一起使用。这很简单,而且可以在短时间内完成。
- 提交 bazel 的功能请求,以便 select 哪个编译器与 C++/ObjC 工具链一起使用。我不能评论这个的可行性,我对 osx 几乎一无所知,我不知道用 Xcode 没有提供的编译器编译 ObjC 是否有意义...
实际上使用最新版本的 bazel 指定
BAZEL_USE_CPP_ONLY_TOOLCHAIN=1
build --action_env CC=/path/to/compiler [...]
确实有效,因为使用了指定的编译器。但是,编译器标志仍然存在问题。如果旧编译器的编译器标志与新编译器不兼容,就会出现问题。我仍然需要找出如何更改编译器标志。
如何告诉 bazel 在 OS X 上使用不同的 C++ 编译器?
bazel build --action_env CC=/path/to/compiler //:target
适用于 linux。
但是 -s
表明无论 CC
是什么,bazel 总是在 OSX 上以 external/local_config_cc/wrapped_clang
(clang) 运行。
CC
仅当您使用仅 C++ 工具链时才能正常工作。如果您安装了 Xcode,bazel 将检测到这一点并自动选择一个不同的工具链,即同时支持 C++ 和 ObjC 的工具链。此工具链只能使用 Xcode 提供的 clang。
这很不幸,我提出两个解决方案:
- 提交 bazel 的功能请求,以便 select 使用哪个工具链。这将允许您告诉 bazel,即使您安装了 Xcode,您也希望将仅 C++ 工具链与自定义编译器一起使用。这很简单,而且可以在短时间内完成。
- 提交 bazel 的功能请求,以便 select 哪个编译器与 C++/ObjC 工具链一起使用。我不能评论这个的可行性,我对 osx 几乎一无所知,我不知道用 Xcode 没有提供的编译器编译 ObjC 是否有意义...
实际上使用最新版本的 bazel 指定
BAZEL_USE_CPP_ONLY_TOOLCHAIN=1
build --action_env CC=/path/to/compiler [...]
确实有效,因为使用了指定的编译器。但是,编译器标志仍然存在问题。如果旧编译器的编译器标志与新编译器不兼容,就会出现问题。我仍然需要找出如何更改编译器标志。