- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 clang++ 而不是 g++ 来编译我的 c++ 文件,而 g++ 是系统的默认编译器。
我试过sudo update-alternatives --install c++ c++ /home/guo/bin/clang++ 100
并设置CC
环境。但它们不起作用。 Bazel 仍然使用 g++ 作为编译器。
一个小时后,Bazel 使用了 clang++。但是发生了错误。
ERROR: /home/guo/utils/lib/BUILD:2:1: C++ compilation of rule '//utils/lib:get_pdf' failed: linux-sandbox failed: error executing command /home/guo/.cache/bazel/_bazel_guo/d2d93a82f24e8dc5485ac1b29928428e/execroot/_bin/linux-sandbox ... (remaining 41 argument(s) skipped).
src/main/tools/linux-sandbox-pid1.cc:592: "execvp(/home/guo/lib/clang, 0x23abde0)": Permission denied
Target //utils/lib:get_pdf failed to buildenter code here
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 0.159s, Critical Path: 0.06s
/home/guo/lib/clang
是一个目录,而不是我计算机中的二进制文件。我猜这里应该是
/home/guo/bin/clang++
但我不知道如何让
Bazel
知道。
Bazel
更改环境时的服务器。
最佳答案
要指定 Bazel 中的默认 C++ 工具链应使用哪个 C/C++ 编译器,请设置 CC
环境变量(例如 CC=clang bazel build //...
)。
您可以使用 --repo_env
选项,例如--repo_env=CC=clang
, 将此默认设置到您的项目或系统范围内 .bazelrc
.
默认的 Bazel C++ 工具链使用系统安装的编译器、头文件和库,而不尝试在 BUILD 文件中声明所有相关文件。这是为了简化用户的配置。因此,每当您以 Bazel 不知道的方式修改 C++ 工具链时(升级编译器的主要版本,将符号链接(symbolic link)从 gcc 切换到 clang,更改带有头文件的目录等),您必须运行 bazel clean --expunge
刷新缓存并在下次重新运行自动配置。
在 Bazel 中指定 C++ 工具链的可靠解决方案是使用 CcToolchainConfigInfo。请参阅 https://docs.bazel.build/versions/master/tutorial/cc-toolchain-config.html 上的文档和 https://docs.bazel.build/versions/master/cc-toolchain-config-reference.html .
关于bazel - 如何在 Bazel 中使用 clang++ 而不是 g++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41356173/
我是一名优秀的程序员,十分优秀!