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

Getting LLVM and Clang from downloaded sources and Visual Studio 2013

本文关键字:2013 获取 LLVM Clang Studio Visual 下载 源代码      更新时间:2023-10-16

我刚刚下载了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

我需要使用 Windows 8.1 和 Visual Studio 2013 配置 LLVM 和 Clang。

问这个问题是因为到目前为止我咨询的教程使用 svn,但是从压缩文件中获取源代码,我对目录树应该是什么以便使 cmake 正常工作没有清晰的认识。

目录结构应为:

llvm/
  projects/
    compiler-rt/
    libcxx/
    libcxxabi/
  tools/
    clang/

我不确定libc ++对Windows的支持有多远,因为我只是使用MSVC的实现来实现ABI兼容性。

使用 Visual Studio 2013 编译 llvm 框架(llvm、clang、libc++ 等)并不是那么困难。

  1. 下载源代码
  2. 解压缩源
  3. 将解压缩的文件夹移动到它们在 llvm 源代码树中的位置。(例如:CFE 版本以名称 clang 进入llvmtools目录中。这个信息之王可以从CMakeFile.txt文件中获得(例如:add_llvm_external_project(clang)在文件'llvm\tools\CMakeFile.txt中)。CMakeFile.txt是指示cmake程序如何生成项目的文件(例如:Makefile,VS项目,XCode项目...用于编译 LLVM)
  4. 创建保存 vs2013 项目的目录
  5. 生成 VS2013 项目(例如:在上一个目录内执行:cmake llvm_sources -G "Visual Studio 12"其中llvm_sources是 llvm 源的根目录。
  6. 打开项目并编译(编译可能需要很长时间 30 分钟或更长时间)
注意:某些项目(例如:

lldb)可能需要额外的依赖项(例如:用于绑定的python c标头)。

从源代码编译时 clang 的问题之一是 clang 使用的包含标头(例如:std 库标头)的目录路径在源代码中是固定的:llvmtoolsclanglibFrontEndInitHeaderSearch.cpp ,在使用 VS2013 编译 llvm 的情况下,默认情况下它使用 MS std 标头。

使用 MS 标头

编译几乎所有带有 clang 的中型程序会给您带来 clang 尚不支持的 MS 扩展、不符合 c++(vc++ 接受为有效)和其他类型的问题的错误,各种 boost 库也是如此(使用 MS 标头时)。

对我来说,更好的成功历史是使用相同的过程编译 MinGW for Windows并使用 MinGW 标头。在这种情况下,很可能需要手动修改 clang的 HeaderSearch 文件以搜索标头(最新版本的 clang 没有最新版本的 gcc 的搜索路径,至少在稳定版本 3.5.0 中)。

使用这种方法,我成功地在Windows 8.1中使用GCC 4.9.1与MinGW编译clang 3.5.0。