如何将clang-cl设置为c ++ 14或c ++ 1z?

时间:2015-08-10 08:47:01

标签: clang visual-studio-2015 clang++ llvm-clang

我试图用-std = c ++ 14,-std = c ++ 1z,-std = c ++ 1y设置clang-cl参数。他们不工作。我正在使用clang 3.7 pre-build for windows x64和VS 2015。

2 个答案:

答案 0 :(得分:5)

下面链接的Clang页面声明-std=c++11-std=c++14以及-std=c++1z都是支持的命令。现在考虑clang-cl,就我所知,clang --driver-mode=cl旨在模仿MSVC 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

答案 1 :(得分:0)

我不相信-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的功能,而其他功能来自这些相同的标准ain&#39 ;支持或无法正常工作。

因此,为了能够支持MSVC的编译,clang不能在不破坏编译的情况下支持-std=c++11标志。 (虽然它可能是你想要的) 那就是MSVC 2015 supports /std:c++14,所以也应该支持clang-cl。 (听起来像是一个错误/功能请求)