LLVM-16编译CMake报错:无法找到已存在的CMakePolicy.cmake文件
解决LLVM 16编译时CMake找不到CMakePolicy.cmake的问题
问题根源
错误提示中CMake尝试从C:/dev/llvm-16.0.0.src/../cmake/Modules/查找文件,也就是LLVM源码目录的同级目录下的cmake/Modules,但你实际将CMake模块文件放在了LLVM源码目录内部的cmake/Modules,路径不匹配导致找不到文件。
解决方案
提供三种可行方案,任选其一即可:
方案1:调整文件放置位置
将你解压得到的cmake-16.0.0.src/Modules文件夹,移动到LLVM源码目录的同级目录,也就是C:/dev/cmake/Modules,这样CMake就能按预期路径找到文件。
方案2:修改CMake命令,指定模块搜索路径
在原有CMake命令末尾添加-DCMAKE_MODULE_PATH参数,明确指定你的模块所在路径,修改后的命令如下:
cmake .. -DLLVM_ENABLE_RTTI=ON -DLLVM_ENABLE_ZLIB=OFF -DLLVM_INCLUDE_BENCHMARKS=OFF -DLLVM_INCLUDE_UTILS=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_COMMON_CMAKE_UTILS=OFF -Thost=x64 -A x64 -G "Visual Studio 17 2022" -DCMAKE_MODULE_PATH=C:/dev/llvm-16.0.0.src/cmake/Modules
方案3:修改LLVM源码的CMakeLists.txt
打开C:/dev/llvm-16.0.0.src/CMakeLists.txt,找到第13行的代码:
include(../cmake/Modules/CMakePolicy.cmake)
将其修改为:
include(cmake/Modules/CMakePolicy.cmake)
修改后CMake会从LLVM源码目录内部的cmake/Modules查找文件。
额外注意事项
- 确保LLVM源码目录下的模块目录名是
Modules(而非小写modules),虽然Windows不区分大小写,但保持一致可避免潜在问题。 - 你的CMake版本3.25.1符合LLVM 16的最低要求(3.20+),版本兼容无需担心。
内容的提问来源于stack exchange,提问作者BitKnight
相关产品推荐
相关产品推荐

