C++ 从下载的源代码和Visual Studio 2013获取LLVM和Clang

C++ 从下载的源代码和Visual Studio 2013获取LLVM和Clang,c++,visual-studio,clang,llvm,C++,Visual Studio,Clang,Llvm,我刚刚下载了LLVM和Clang的源代码作为压缩文件 到目前为止,我拥有的文件有: cfe-3.5.0.src.tar 编译器-rt-3.5.0.src.tar libcxx-3.5.0.src.tar libcxxabi-3.5.0.src.tar llvm-3.5.0.src.tar 我需要使用Visual Studio 2013使用Windows 8.1配置LLVM和Clang 我问这个问题是因为到目前为止我参考的教程使用svn,但由于源文件来自压缩文件,我不清楚什么是目录树,以便使C

我刚刚下载了LLVM和Clang的源代码作为压缩文件

到目前为止,我拥有的文件有:

  • cfe-3.5.0.src.tar
  • 编译器-rt-3.5.0.src.tar
  • libcxx-3.5.0.src.tar
  • libcxxabi-3.5.0.src.tar
  • llvm-3.5.0.src.tar
我需要使用Visual Studio 2013使用Windows 8.1配置LLVM和Clang


我问这个问题是因为到目前为止我参考的教程使用svn,但由于源文件来自压缩文件,我不清楚什么是目录树,以便使C正常工作。

目录结构应该是:

llvm/
  projects/
    compiler-rt/
    libcxx/
    libcxxabi/
  tools/
    clang/
我不确定libc++对Windows的支持到底有多大,因为我只是使用MSVC的实现来实现ABI兼容性。

用Visual Studio 2013编译llvm框架(llvm、clang、libc++,等等)并不困难

  • 下载源代码
  • 压缩源
  • 将解压缩的文件夹移动到它们在llvm源目录树中的位置。(例如:cfe版本进入名为clang的
    llvm\tools
    目录。这一信息可以从CMakeFile.txt文件中获得(例如:
    add_llvm\u external_project(clang)
    在文件`llvm\tools\CMakeFile.txt中)。CMakeFile.txt是指示程序如何生成项目的文件(例如:Makefile、VS项目、XCode项目……用于编译llvm)
  • 创建用于保存vs2013项目的目录
  • 生成VS2013项目(例如:在上一个目录中执行:
    cmake llvm_sources-G“Visual Studio 12”
    ,其中llvm_sources是llvm源的根目录
  • 打开项目并编译(编译可能需要30分钟或更长时间)
  • 注意:某些项目(例如:lldb)可能需要额外的依赖项(例如:用于绑定的pythonc头)

    从源代码编译clang时的一个问题是,clang使用的include头(例如:std库头)的目录路径在源代码中是固定的:
    llvm\tools\clang\lib\FrontEnd\InitHeaderSearch.cpp
    ,在使用VS2013编译llvm的情况下,默认情况下使用MS std头

    使用MS报头编译几乎每个中型程序,都会给MS扩展带来错误,而不支持CMS,不符合C++(VC++接受为有效)和其他类型的问题,这也是Boost的各种库(当使用MS头)时的情况。 对我来说,更好的成功历史是使用与MinGW for windows相同的过程并使用MinGW标头进行编译。在这种情况下,很可能需要手动修改HeaderSearch文件以搜索clang标头(clang的最新版本没有gcc的最新版本的搜索路径,至少在稳定版本3.5.0中)


    使用此方法,我在Windows 8.1中成功地使用MinGW和GCC 4.9.1在Windows 8.1中编译了clang 3.5.0。

    您的机器上是否安装了Visual Studio 2013(Express Desktop)varion?编译不太麻烦,您可以全部下载,将所有内容都放在正确的位置(例如:cfe-…需要转到llvm\tools并命名为clang。您可以看到CMakeList.txt文件中的类似提示,然后使用cmake可以生成VS解决方案并进行编译。问题通常是稍后使用编译器和MS std库(支持有了很大的改进,但几乎任何带有std的中型程序都会破坏编译过程,这需要一些增强)我在Windows中使用了MINW。NetVipeC可能会回答这个问题吗?我没有经验,使用CsAN和MSVC编译器作为后端。CLAN支持MS-Excel和不符合C++的编译MSVC头文件的需要。只需要使用CLAG-CL EXE或设置TA来启用支持。rget
    -target i686 pc windows msvc
    。目前还不支持异常,因此您还需要设置
    -D_HAS_EXCEPTION=0
    。是的,它支持一些扩展(模板的后期编译、vc++的预定义宏等),但与MS标头中使用的所有扩展相去甚远(可能stl库是可以的,我见过一些使用DX编译的例子,但是在
    Windows.h
    MFC
    ,等等…你肯定会发现问题),因为这个问题是
    clang-cl.exe
    有一个回退模式,当它无法编译代码时(它传递到VC++
    cl.exe
    )哦,是的,MFC和类似的东西可能仍然是坏的。我只想到了仅限于标准和Win32头的程序(例如,Windows.h适合我)。我还能够使用
    编译和运行程序(clang++,而不是clang cl,我没有使用/fallback)。我不使用也没有任何MFC代码可供尝试。我需要再次测试,thx。您是否使用从VS2013或MinGW源代码编译的网站预构建Clang?我使用VS2013从源代码(每天,从主干)构建Clang。