我试图在Windows10上用c++17和VisualStudio2019编译一个目标。
我尝试让--cxxopt='-std=c++17'在.bazelrc中位于工作区的同一个目录中,但这是行不通的。
例如,我得到了一个错误
C:\Users\marki\plasty>bazel build --verbose_failures labeling:semantic_seg
INFO: Analyzed target //labeling:semantic_seg (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
ERROR: C:/users/marki/plasty/labeling/BUILD:1:1: C++ compilation of rule '//labeling:semantic_seg' failed (Exit 2)
class template optional is only available with C++17 or later.
...
labeling/semantic_seg.cpp(183): error C2429: language feature 'structured bindings' requires compiler flag '/std:c++17'
Target //labeling:semantic_seg failed to build
INFO: Elapsed time: 1.184s, Critical Path: 0.84s
INFO: 0 processes.
FAILED: Build did NOT complete successfully我还用类似的结果尝试了--cxxopt='/std:c++17'。
发布于 2019-10-02 02:48:48
您需要在cc_binary中添加该选项。例如:
cc_binary(
name = "hello-main",
srcs = ["hello-main.cpp"],
deps = [":hellolib"],
copts = ["/std:c++17"],
)这将将选项传递给编译器cl.exe。
更新
如果您想在bazelrc中构建with选项,那么在:How to set C++ standard version when build with Bazel?中已经有了答案,只是它正在使用c++11,因此对于c++17,在.bazelrc中添加这些选项。
build:c++17 --cxxopt=-std=c++1z
build:c++17 --cxxopt=-stdlib=libc++
build:c++1z --cxxopt=-std=c++1z
build:c++1z --cxxopt=-stdlib=libc++https://stackoverflow.com/questions/58194329
复制相似问题