首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在bazel中为visual指定c++17?

如何在bazel中为visual指定c++17?
EN

Stack Overflow用户
提问于 2019-10-02 02:03:13
回答 1查看 2K关注 0票数 1

我试图在Windows10上用c++17和VisualStudio2019编译一个目标。

我尝试让--cxxopt='-std=c++17'.bazelrc中位于工作区的同一个目录中,但这是行不通的。

例如,我得到了一个错误

代码语言:javascript
复制
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'

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-02 02:48:48

您需要在cc_binary中添加该选项。例如:

代码语言:javascript
复制
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中添加这些选项。

代码语言:javascript
复制
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++
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58194329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档