一、下载LLVM/Clang源码

从http://releases.llvm.org/download.html下载LLVM 8.0的源码: LLVM source code Clang source code compiler-rt source code 下载完成后,把llvm-8.0.0.src.tar.xz、cfe-8.0.0.src.tar.xz、compiler-rt-8.0.0.src.tar.xz三个包分别解压出来。

  • 将cfe-8.0.0.src.tar.xz解压出来的目录更名为clang,放在llvm-8.0.0.src\tools目录下
  • 将compiler-rt-8.0.0.src.tar.xz解压出来的目录更名为compiler-rt,放在llvm-8.0.0.src\projects
  • 在llvm-8.0.0.src目录下创建一个build目录,专门用于存放编译生成的文件
  • 在llvm-8.0.0.src/build目录下再创建一个install目录,作为安装目录

二、使用CMake生成VS工程

1.选择源文件所在路径和编译生成的目标路径

2.点击Add Entry按钮增加如下属性

这里可以填写的有效目标为:host, X86, Sparc, PowerPC, ARM, AArch64, Mips, Hexagon, Xcore, MSP430, NVPTX, SystemZ, AMDGPU, BPF, CppBackend或者 all,如果有多个目标使用英文分号隔开。

由于是使用的VS2015进行编译,源码中使用到的有一些C++特性不被支持,所以需要设置LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN属性为true,否则会报错;VS2017及以上版本不需要设置。

3.点击Configure进行编译器配置

如果需要生成x64平台配置,则需要在设置toolset选项时添加host=x64,否则会报如下警告:

CMake Warning at CMakeLists.txt:33 (message): Visual Studio generators use the x86 host compiler by default, even for 64-bit targets. This can result in linker instability and out of memory errors. To use the 64-bit host compiler, pass -Thost=x64 on the CMake command line.

点了Finish按钮后就开始Configure了,下图红色部分就是报了一个LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN的警告,因为前面已经设置了此属性为true,否则就是直接报错退出了。

Configure完成后就可以点击Generate进行生成了,生成完成后点击Open Project打开生成的VS解决方案,项目数量比较多,有450多个项目,编译是一个漫长的过程,需要编译几个小时,可以不用全部编译,可以选择clang项目进行编译,VS会自动编译依赖项目。BTW:磁盘空间准备大一点至少留足15个G。

祝好!