我按照http://clang.llvm.org/get_started.html上的说明操作
我用MSVC 2010编译了最新的llvm和clang的主干。现在我可以用Clang编译简单的程序,但是当我试图编译这个程序时,我得到了很多错误。 这里是程序:
#include <algorithm> int main(){ return 0; }
这里有一些错误:
In file included from hello.cpp:1: In file included from C:\Program Files\Microsoft Visual Studio 10.0\VC\include\algorithm:6: In file included from C:\Program Files\Microsoft Visual Studio 10.0\VC\include\memory:987: In file included from C:\Program Files\Microsoft Visual Studio 10.0\VC\include\intrin.h:24: In file included from H:/LLVM/build/bin/Debug/../lib/clang/3.3/include\immintrin.h:32: In file included from H:/LLVM/build/bin/Debug/../lib/clang/3.3/include\xmmintrin.h:988: H:/LLVM/build/bin/Debug/../lib/clang/3.3/include\emmintrin.h:1384:22: error: expected expression return (__m128)__in; ^ H:/LLVM/build/bin/Debug/../lib/clang/3.3/include\emmintrin.h:1390:23: error: expected expression return (__m128i)__in; ^ H:/LLVM/build/bin/Debug/../lib/clang/3.3/include\emmintrin.h:1396:23: error: expected expression return (__m128d)__in; ^
完整的输出从铛: http : //pastebin.com/qi87K8qr
铿锵试图使用MSVC标题,但它不起作用。 也许我应该使用libc ++或libstdc ++,但是怎么做?
注意我对预编译的clang二进制文件不感兴趣
是的,clang根本不支持所有Microsoft的扩展C ++语法,因此无法解析使用该语法的Microsoft C ++头文件。 不仅如此,Clang也没有完全支持微软的C ++ ABI,名字变形等等。但是,我相信Windows上的Clang和C一起工作还是不错的。
要使用不同的C ++标准库,可以使用clar忽略正常的头文件和库目录,IIRC, -nostdinc++和-nostdlib++ 。 然后你可以告诉clang你要使用的include和库目录(使用-isystem或-I或其他)。 不过,我不确定libc ++或libstdc ++是否在这些情况下工作,因为它们可能取决于Windows C运行时库没有的东西。
Chandler Carruth 在“Going Native 2013”中提到,现在有了Visual Studio集成的Windows的clang版本 。 很多东西被打破,例如,溪流(所以好老的你好世界将无法正常工作)。 但是,在Windows上进行叮当工作还有很多工作要做,所以期望它能够相当快地完成。
在clang本身提供的头文件中有错误。 看起来它不能正确处理MMX / SSE类型。 尝试将-msse -msse2开关添加到命令行。
我正在使用libstdc ++并使用VS2012Express构建了用于桌面的clang。 cmake字符串是“Visual Studio 11 Win64”和基本dirs。 是使用-I参数指定的。
我猜你的程序可以工作,如果我使用Windows的mingw头。