使用Bazel更改编译器命令行

时间:2020-03-10 20:50:57

标签: c++ bazel

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

  • 由于脆弱,请避免通过CC envvar设置编译器
  • 避免使用--crosstool_top等。 ,据我了解,Bazel正在远离它
  • 与--all_incompatible_changes兼容
  • 不要轻易通过copts覆盖这些args,因为它很脆弱并且容易出错。

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

我看着ToolchainsConfiguring C++ toolchainrules_cc-但我不知道。

2 个答案:

答案 0 :(得分:2)

可以通过禁用提供它们的default_compile_flags功能来删除默认参数(例如:-fno-omit-frame-pointer-std=c++0x):

$ bazel build ... --features=-default_compile_flags

答案 1 :(得分:1)

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

build:your_config --cxxopt=-std=c++14`.

构建代码:

bazel build --config=your_config //...