使用 Bazel 构建时如何设置 C++ 标准版本?
How to set C++ standard version when build with Bazel?
我对 C++ 有点陌生。我知道如何用CMake设置C++版本,但不知道如何在Bazel中设置C++版本。
也许可以在 cc_libary
中使用 copts
参数进行设置,但我必须在每个 cc_libary
?
中进行设置
bazel build --cxxopt='-std=c++11' main:hello-world
这可行,但我想知道是否有办法全局设置此 cxxopt
,例如 CMAKE_CXX_FLAGS
.
要使用 Bazel 中的默认 C++ 工具链设置标准,您可以设置环境变量 BAZEL_CXXOPTS
,例如BAZEL_CXXOPTS="-std=c++14"
。您还可以从命令行或使用 --repo_env=BAZEL_CXXOPTS
从 .bazelrc
设置它。 :
是标志分隔符。
或者,您可以将 --cxxopt
传递给 Bazel,或将其放入 .bazelrc
,例如--cxxopt='-std=c++11'
.
在 Bazel 中指定 C++ 工具链的可靠解决方案是使用 CcToolchainConfigInfo
。请参阅 https://docs.bazel.build/versions/master/tutorial/cc-toolchain-config.html and https://docs.bazel.build/versions/master/cc-toolchain-config-reference.html 处的文档。
将此添加到 .bazelrc
旁边 WORKSPACE
:
build --action_env=BAZEL_CXXOPTS="-std=c++20"
如果要设置多个选项,用冒号隔开:
build --action_env=BAZEL_CXXOPTS="-std=c++20:-Werror"
这是一种解决方法,因为 bazel 设置了一个环境变量,然后 bazel 使用它。但它有效。
顺便说一句:.bazelrc
中的 build --cxxopt=-std=c++20
对我不起作用。
我对 C++ 有点陌生。我知道如何用CMake设置C++版本,但不知道如何在Bazel中设置C++版本。
也许可以在 cc_libary
中使用 copts
参数进行设置,但我必须在每个 cc_libary
?
bazel build --cxxopt='-std=c++11' main:hello-world
这可行,但我想知道是否有办法全局设置此 cxxopt
,例如 CMAKE_CXX_FLAGS
.
要使用 Bazel 中的默认 C++ 工具链设置标准,您可以设置环境变量 BAZEL_CXXOPTS
,例如BAZEL_CXXOPTS="-std=c++14"
。您还可以从命令行或使用 --repo_env=BAZEL_CXXOPTS
从 .bazelrc
设置它。 :
是标志分隔符。
或者,您可以将 --cxxopt
传递给 Bazel,或将其放入 .bazelrc
,例如--cxxopt='-std=c++11'
.
在 Bazel 中指定 C++ 工具链的可靠解决方案是使用 CcToolchainConfigInfo
。请参阅 https://docs.bazel.build/versions/master/tutorial/cc-toolchain-config.html and https://docs.bazel.build/versions/master/cc-toolchain-config-reference.html 处的文档。
将此添加到 .bazelrc
旁边 WORKSPACE
:
build --action_env=BAZEL_CXXOPTS="-std=c++20"
如果要设置多个选项,用冒号隔开:
build --action_env=BAZEL_CXXOPTS="-std=c++20:-Werror"
这是一种解决方法,因为 bazel 设置了一个环境变量,然后 bazel 使用它。但它有效。
顺便说一句:.bazelrc
中的 build --cxxopt=-std=c++20
对我不起作用。