我想完全控制Bazel在编译和链接C ++文件时传递给编译器的命令行参数。 例如,我想通过自定义路径使用G ++,我想将-std=c++0x
更改为-std=c++14
并删除-fno-omit-frame-pointer
-使用以下限制:
CC
envvar设置编译器--crosstool_top
等。 ,据我了解,Bazel正在远离它copts
覆盖这些args,因为它很脆弱并且容易出错。最好,我想获取自动检测到的,生成的工具链,对其进行修改,并将其提交到我的工作区中,以供工作区中的每个C ++目标(包括从源编译的工作区中导入的)使用。
我看着Toolchains,Configuring C++ toolchain,rules_cc-但我不知道。
答案 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 //...