我尝试用-std=c++14、-std=c++1z、-std=c++1y设置clang-cl参数。但它们不起作用。我使用的是windows x64和VS 2015的clang 3.7预编译版本。
发布于 2015-08-11 07:26:56
下面链接的Clang页面声称-std=c++11、-std=c++14以及-std=c++1z都是受支持的命令。现在考虑到,据我所知,clang-cl是一个clang --driver-mode=cl,它的目标是模仿微软的cl.exe。我不明白为什么这会消除对平台无关特性的支持,比如c++标准。
http://clang.llvm.org/cxx_status.html
编辑:在另一篇关于同一主题的文章中,提到了在clang-cl模式下,为了将参数传递给clang本身,您必须使用:
-Xclang <arg> Pass <arg> to the clang compiler
这里引用了:http://clang.llvm.org/docs/UsersManual.html#clang-cl
发布于 2016-07-29 17:10:37
我不相信-std=c++14是可以工作的。Clang-cl是clang的一个单独的驱动程序(不是那么单独,因为它只是clang的一个重命名),它支持MSVC参数而不是GCC参数。
所有受支持的命令行参数的概述可以在here中找到,它不包含此标志。
根据我的理解,clang-cl接管了MSVC支持的C++特性,而不是使用标准(+ MSVC不支持的一些扩展)。这一点尤其重要,因为MSVC (2015年前)没有在标准上进行区分,例如MSVC 2013包含来自c++11,c++14和c++17的功能,而来自这些相同标准的其他功能不支持或不能正常工作。
因此,为了能够支持MSVC的编译,clang不能在不中断编译的情况下支持-std=c++11标志。(虽然这可能是你想要的),也就是说,clang,所以可能也应该支持MSVC 2015 supports /std:c++14 -cl。(听起来像是bug/功能请求)
https://stackoverflow.com/questions/31915246
复制相似问题