Bazel编译报错:不支持C++14以下版本,如何解决?
解决Bazel构建时Abseil要求C++14+的编译错误
针对你遇到的Abseil库要求C++14及以上版本的编译错误,结合你的环境给出以下几种修复方法:
修正编译选项参数并直接传递
你之前设置BAZEL_CXXOPTS=-std=c++11是错误的,Abseil明确要求C++14+,需要改为对应版本。可以在构建时直接传递参数:bazel build --cxxopt="-std=c++14" //你的目标路径或者临时设置环境变量后构建:
export BAZEL_CXXOPTS="-std=c++14" bazel build //你的目标路径在构建配置文件中全局/局部指定C++版本
- 在项目根目录的
BUILD文件中,为整个包设置默认C++版本:package(default_cpp_version = "cpp14") - 或者针对单个编译目标单独设置:
cc_binary( name = "你的目标名", srcs = ["源文件.cc"], copts = ["-std=c++14"], )
- 在项目根目录的
强制Bazel使用conda环境中的gcc
确保Bazel正确识别conda环境里的gcc,构建时指定编译器路径:bazel build --cxxopt="-std=c++14" --repo_env=CC=$(which gcc) //你的目标路径$(which gcc)会自动获取当前conda环境下的gcc路径。创建项目级bazelrc文件
如果找不到系统或用户级的bazelrc,直接在项目根目录创建.bazelrc文件,添加以下内容:build --cxxopt="-std=c++14"后续所有构建命令都会自动应用该编译选项。
内容的提问来源于stack exchange,提问作者hanugm
相关产品推荐
相关产品推荐

