首页 > 解决方案 > 如何在 Bazel 项目或工作区中设置 C++ 标准?

问题描述

我目前正在将一个多包 C++14 项目迁移到 Bazel,但是每当我$ bazel build在 linux 上运行时,我最终都会遇到构建错误,因为 Bazel 正在使用-std=c++0x.

该项目的要求之一是在构建系统启动并运行后逐渐将其包迁移到 C++17。但是,在浏览 Bazel 的文档后,我没有看到有关如何设置项目的目标 C++ 标准版本的参考。CMake 通过它的CXX_STANDARDtarget 属性轻松轻松地处理了这个问题,但到目前为止,我没有看到 Bazel 支持这个用例。

考虑到这一点,有谁知道 Bazel 是否允许用户为特定项目/工作区指定 C++ 标准版本?如果是这样,是否可以提供一个最小的工作示例?

标签: c++bazel

解决方案


当您需要学习如何调整 C/C++ 工具链时, envoy项目是一个很好的起点。在您的情况下,只需将该行添加到.bazelrc文件中:

build:linux --cxxopt=-std=c++14

推荐阅读