使用 Bazel 更改编译器命令行

ere*_*non 5 c++ bazel

我希望在编译和链接 C++ 文件时完全控制 Bazel 传递给编译器的命令行参数。例如,我想使用自定义路径中的 G++,我想更改-std=c++0x-std=c++14并删除-fno-omit-frame-pointer- 具有以下约束:

  • 避免通过 envvar 设置编译器CC,因为它很脆弱
  • 避免使用--crosstool_topet。al,据我了解 Bazel 正在远离它
  • 与 --all_incomplete_changes 兼容
  • 不要简单地通过 覆盖这些参数copts,因为它很脆弱并且会使命令容易出错

最好,我想获取自动检测到的、生成的工具链,对其进行修改,并将其提交到我的工作区,以供工作区中的每个 C++ 目标使用,包括从源编译工作区导入的目标。

我查看了ToolchainsConfiguring C++ toolchainrules_cc - 但我无法弄清楚。

Ver*_*ahn 2

添加.bazelrc到您的项目。添加行

build:your_config --cxxopt=-std=c++14
Run Code Online (Sandbox Code Playgroud)

构建您的代码:

bazel build --config=your_config //...
Run Code Online (Sandbox Code Playgroud)