在Windows上使用clang编译c ++ 11程序时出错

Mar*_*ila 5 c++ windows clang visual-c++ c++11

我已经在Windows上构建了clang 3.2并且正在尝试构建一个简单的hello world程序.但是我收到了很多错误,如下所示.

d:\Marius\xyz>clang++ -stdlib=libc++ -std=c++11 -Wall xyz.cpp -o xyz.exe
clang++: warning: argument unused during compilation: '-stdlib=libc++'
In file included from xyz.cpp:12:
In file included from ./stdafx.h:18:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\algorithm:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xmemory:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xmemory0:9:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility:8:
In file included from C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\utility:8:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\type_traits:1072:
33: error:
  '_Ty' does not refer to a value
            _HAS_TRIVIAL_MOVE_CONSTRUCTOR(_Ty)
                                          ^

...

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xstddef:540:50: note:
      expanded from macro '_VARIADIC_EXPAND_4'
#define _VARIADIC_EXPAND_4(FUNC, X1, X2, X3, X4) \
                                                 ^
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xrefwrap:222:22:note:
      expanded from macro '_CLASS_RESULT_OF_PMF_OPT_0X'
                        __thiscall, X2, X3, X4)
                                          ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
Run Code Online (Sandbox Code Playgroud)

我从VC++ 2012标题中得到了很多这样的错误.是否有可能在Windows上使用clang ++构建C++ 11代码?我是否必须提供额外的命令切换?

mos*_*ald 3

Clang 在由 Visual Studio 构建时无法正常工作(据说在由 MinGW 构建时可以正常工作,但我自己无法验证)。

构建 Clang 时,它被配置为使用用于构建它的库。由于您使用 Visual Studio 构建了 Clang,因此 Clang 将尝试使用 Visual Studio 标头和库。不幸的是,Clang 和 Visual Studio 的内部结构差异很大,以至于 Clang无法使用 VS 特定的标头。

libc++可以为 Windows 编译之前,Clang 在由 Visual Studio 编译时将(几乎肯定)永远不会工作。尝试使用 MinGW 构建它(并发表一篇博客文章或其他有关您如何做到这一点的内容!),看看这是否适合您。