我希望我的Bazel项目能够使用c++17。有一个类似的问题(How to set C++ standard version when build with Bazel?),但是被接受的答案并没有移植到MSCV。
摩根士丹利资本国际需要--cxxopt='/std:c++17',gcc需要--cxxopt='--std=c++17'。
有没有人有一个最小的示例配置,建立在最流行的Windows和Linux编译器(gcc,MSCV,clang)上,将版本设置为c++17?我很难理解工具链文档。
以下内容不起作用。
# .bazelrc
build --cxxopt=select({
"@bazel_tools//src/conditions:windows": "/std:c++17",
"//conditions:default": "--std=c++17",
})发布于 2022-02-10 16:49:15
你可以在你的.bazelrc中做这样的事情
# GCC 9.3
build:gcc9 --cxxopt=-std=c++2a
build:gcc9 --cxxopt=-Wall
build:gcc9 --cxxopt=-Werror
##build:gcc9 --cxxopt=-Wextra
build:gcc9 --define compiler=gcc9_3_0
build:macos --cxxopt=-std=c++2a
build:macos --cxxopt=-Wall
#build:macos --cxxopt=-Werror
##build:macos --cxxopt=-Wextra
build:macos --define compiler=clang12
# Clang 13.0.0
build:clang13 --cxxopt=-std=c++17
#build:clang13 --cxxopt=-mavx
#build:clang13 --cxxopt=-mavx2
#build:clang13 --cxxopt=-msse4.2
#build:clang13 --cxxopt=-Werror
build:clang13 --define compiler=clang13
build:clang13 --incompatible_enable_cc_toolchain_resolution
build:clang13 --cxxopt=-mwaitpkg
# Mingw
build:mingw --cxxopt=-std=c++2a
#build:mingw --cxxopt=-Wall
#build:mingw --cxxopt=-Werror
#build:mingw --cxxopt=-Wextra
build:mingw --compiler=mingw-gcc
# Visual Studio 2019
build:vs2019 --cxxopt=/std:c++17
build:vs2019 --enable_runfiles # https://github.com/bazelbuild/bazel/issues/8843
build:vs2019 --define compiler=vs2019
build:vs2019 --copt=-DWIN32_LEAN_AND_MEAN
build:vs2019 --copt=-DNOGDI
build:vs2019 --host_copt=-DWIN32_LEAN_AND_MEAN
build:vs2019 --host_copt=-DNOGDI
# Visual Studio 2022
build:vs2022 --config=vs2019然后在构建时选择一个配置,例如bazel --config=vs2022 //...
当您懒得每次在主目录中创建配置时(例如,~/.bazelrc,一个包含build --config=config_for_the_machine的文件)。
配置开关是昂贵的。如果您切换配置,Bazel需要重新运行很多东西。如果您打开一台计算机,通常在不同的信任(例如GCC和Clang)之间切换,那么使用Bazel远程缓存服务器。我在本地机器上使用了一个配置开关--这使得配置开关便宜,因为服务器能够为不同的配置存储工件,而Bazel似乎只存储最新配置的工件。
https://stackoverflow.com/questions/71067900
复制相似问题