如何查看Bazel默认所有可用cc_toolchains及获取选中工具链信息
查看与切换Bazel的CC工具链
一、查看所有可用的CC工具链
可以通过以下命令列出Bazel检测到的所有本地CC工具链相关目标:
bazel query @local_config_cc//:all --output label_kind
执行后会输出包含gcc、clang等不同工具链的标识信息。
另外,也可以直接查看Bazel自动生成的工具链配置目录,路径通常为:
~/.cache/bazel/_bazel_<你的用户名>/<哈希值>/external/local_config_cc
该目录下的BUILD文件中,会明确列出所有被检测到的工具链定义细节。
二、切换到指定的CC工具链
单次构建临时切换
直接在构建命令中通过环境变量指定编译器:
- 使用clang构建:
CC=clang bazel build //your/target:name
- 使用特定版本gcc构建:
CC=gcc-11 bazel build //your/target:name
永久配置(项目/全局级)
- 项目级:在项目根目录创建
.bazelrc文件,添加配置:
build --action_env=CC=clang build --cxxopt=-std=c++17
此后该项目构建默认使用指定工具链。
2. 全局级:在用户主目录创建.bazelrc文件并添加上述配置,所有Bazel项目都会默认应用该工具链设置。
三、获取当前选中工具链的信息
查看构建时的工具链细节
在构建命令中添加--verbose_failures参数,构建过程中(即使失败)会输出完整的编译命令行,从中可以看到当前使用的编译器路径、参数等信息:
bazel build --verbose_failures //your/target:name
查询工具链的定义信息
使用bazel query结合输出参数查看指定工具链的详细配置:
bazel query @local_config_cc//:cc-compiler-k8 --output build
这里的cc-compiler-k8是x86_64 Linux环境下的默认工具链标签,替换为你关注的工具链标签后,会输出该工具链的编译器路径、编译选项等核心配置。
内容的提问来源于stack exchange,提问作者Junhyeok Ahn
相关产品推荐
相关产品推荐

