一、所需工具
-
Visual Studio
- 推荐版本:Visual Studio 2022。其他版本亦可支持。
-
CMake
- 下载地址
-
Ninja
- 下载地址
-
LLVM
- 版本参考:
llvm-project-llvmorg-18.1.8
- 下载地址
- 版本参考:
二、配置与编译步骤
-
以管理员身份打开命令行终端,输入以下命令来设置执行策略:
Set-ExecutionPolicy Unrestricted
按提示输入
Y
以确认。 -
进入项目目录并创建构建目录:
cd D:\llvm-project-main\llvm-project-llvmorg-18.1.8\ mkdir build cd build
-
使用CMake生成构建文件并开始编译:
cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;clang-tools-extra;libunwind;compiler-rt" \ -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_CXX_FLAGS="/utf-8" ..\llvm\
三、常见错误及解决方案
如果在执行上述命令时出现以下错误:
CMake Error at CMakeLists.txt:139 (MESSAGE):
libcxx
isn’t a known project:
bolt;clang;clang-tools-extra;compiler-rt;cross-project-tests;libc;libclc;lld;lldb;mlir;openmp;polly;pstl;flang
.
Did you mean to enable it as a runtime inLLVM_ENABLE_RUNTIMES
?
此错误表明 libcxx
被CMake识别为未知项目,可能是由于LLVM版本的变化或CMake选项设置不当,需要设置DLLVM_ENABLE_RUNTIMES=“libcxx;libcxxabi;libunwind;compiler-rt”。
解决方案:
-
使用正确的CMake选项:
如果要构建LLVM项目,需使用LLVM_ENABLE_RUNTIMES
选项来启用libcxx
和libcxxabi
,而非LLVM_ENABLE_PROJECTS
。修改后的命令如下:cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind;compiler-rt" \ -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" \ -DLLVM_ENABLE_ASSERTIONS=ON -DCMAKE_CXX_FLAGS="/utf-8" ..\llvm\
-
检查LLVM版本与CMake的兼容性:
- 确保CMake版本与LLVM版本兼容。如果CMake版本过旧,可能会触发一些CMake policy(如CMP0114和CMP0116)的警告或错误。
- 可以尝试升级到最新版本的CMake,并参考LLVM文档确保使用了正确的构建选项。
-
修复CMake policy警告:
- CMake可能提示某些策略已经过时,未来版本将移除旧的行为。在
CMakeLists.txt
中手动设置这些策略为NEW
,或确保代码已经适配新行为。
例如,可在
CMakeLists.txt
的开头加入:cmake_policy(SET CMP0114 NEW) cmake_policy(SET CMP0116 NEW)
- CMake可能提示某些策略已经过时,未来版本将移除旧的行为。在
通过上述调整,应该可以解决配置错误,顺利完成构建。