[英]Change compiler command line with Bazel
我想在编译和链接 C++ 文件时完全控制 Bazel 传递给编译器的命令行参数。 例如,我想使用自定义路径中的 G++,我想将-std=c++0x
更改为-std=c++14
并删除-fno-omit-frame-pointer
-以下约束:
CC
envvar 设置编译器,因为它很脆弱--crosstool_top
等。 al,据我所知 Bazel 正在远离它copts
覆盖这些 args ,因为它很脆弱并且会使命令容易出错最好,我希望自动检测、生成的工具链、修改它并将其提交到我的工作区,以供工作区中的每个 C++ 目标使用,包括从源编译的工作区导入的。
我查看了Toolchains 、 Configuring C++ toolchain 、 rules_cc - 但我想不通。
默认参数(例如: -fno-omit-frame-pointer
或-std=c++0x
)可以通过禁用提供它们的default_compile_flags
功能来删除:
$ bazel build ... --features=-default_compile_flags
将.bazelrc
添加到您的项目中。 添加行
build:your_config --cxxopt=-std=c++14
构建你的代码:
bazel build --config=your_config //...
您也可以在整个包的 BUILD 文件中执行此操作:
package(features = ["-default_compile_flags"])
或在特定的二进制文件上:
cc_binary(
name = "cppversion",
srcs = ["cppversion.cpp"],
copts = ["--std=c++14"],
features = ["-default_compile_flags"]
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.