如何加快LLVM项目编译速度?仅需编译X86架构无需Windows平台支持
LLVM编译提速解决方案
1. 裁剪编译目标(规避无关架构与平台内容)
- 仅编译X86架构目标:添加CMake参数
-DLLVM_TARGETS_TO_BUILD="X86",LLVM默认会编译所有支持的CPU架构,该参数可以砍掉绝大多数架构相关的编译工作量。 - 禁用Windows平台相关组件:添加参数
-DLLVM_SUPPORT_WINDOWS_MANIFEST=OFF,即可停止编译你看到的libLLVMWindowsManifest.a相关代码。 - 关闭非必要的测试、示例编译:添加参数
-DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_BENCHMARKS=OFF,这类代码默认开启,不需要的话可以直接禁用。
2. 切换为Ninja构建工具(构建效率提升最显著)
Xcode生成器的并行编译效率远低于Ninja,按以下步骤切换:
- 先安装Ninja,macOS环境可直接执行
brew install ninja完成安装。 - 清空原有build目录后,重新执行CMake生成配置:
cmake -S llvm -B build -G Ninja \ -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi" \ -DLLVM_TARGETS_TO_BUILD="X86" \ -DLLVM_SUPPORT_WINDOWS_MANIFEST=OFF \ -DLLVM_INCLUDE_TESTS=OFF \ -DLLVM_INCLUDE_EXAMPLES=OFF \ -DCMAKE_BUILD_TYPE=Release
- 执行编译时启动满核心并行:运行
ninja -j$(sysctl -n hw.ncpu),会自动匹配当前设备的CPU核心数开启并行编译,比Xcode默认构建效率高30%以上。
3. 额外可选裁剪配置
如果仅需要基础的clang编译能力,可以添加以下参数进一步裁剪:
-DCLANG_ENABLE_ARCMT=OFF:关闭ARC迁移工具编译-DCLANG_ENABLE_STATIC_ANALYZER=OFF:关闭clang静态分析器编译-DLLVM_ENABLE_BACKTRACES=OFF:关闭异常栈回溯支持(不需要调试LLVM自身的话可以开启)- 不需要调试符号时将
CMAKE_BUILD_TYPE设为Release,比Debug构建速度快2倍以上,产物体积也更小。
内容的提问来源于stack exchange,提问作者DNG
相关产品推荐
相关产品推荐

