用途:帮助代理诊断并降低 C/C++ 项目的构建耗时,覆盖编译缓存、分布式编译、合并编译单元、预编译头、链接加速与头文件裁剪。
主要能力与用法:
- 先定位瓶颈,例如 time cmake --build build -j$(nproc),或用 -ftime-report、ninja -j1 统计最慢的编译单元。
- ccache 编译器缓存:apt-get install ccache 或 brew install ccache;用 ccache -s 查看命中率,ccache -M 20G 设置容量,ccache -C 清空。CMake 中推荐设置 CMAKE_C_COMPILER_LAUNCHER 与 CMAKE_CXX_COMPILER_LAUNCHER。
- sccache:cargo install sccache 或 brew install sccache,可设 RUSTC_WRAPPER=sccache,支持 S3 后端(SCCACHE_BUCKET、SCCACHE_REGION),用 sccache --show-stats 查看统计。
- 预编译头:CMake ≥3.16 用 target_precompile_headers,可用 REUSE_FROM 跨目标复用;适合大而稳定的头(STL、Boost、Qt),不适合频繁改动的项目头。
- unity/jumbo 构建:set_target_properties(... UNITY_BUILD ON),用 UNITY_BUILD_BATCH_SIZE 控制批量,SKIP_UNITY_BUILD_INCLUSION 排除文件;注意匿名命名空间、头文件中的 using namespace、重复静态变量等问题。
- split-DWARF:gcc -g -gsplit-dwarf,可配合 -Wl,--gdb-index 加快 GDB 启动,用 dwp 合并 .dwo。
- distcc:worker 端 distccd --daemon --allow ... --jobs 8,客户端设 DISTCC_HOSTS 并以 CC="distcc gcc" 编译,可与 ccache 叠加为 CC="ccache distcc gcc"。
- IWYU 头文件裁剪:apt-get install iwyu,通过 CMAKE_CXX_INCLUDE_WHAT_YOU_USE=iwyu 运行,用 fix_include 应用修复。
适用场景:C/C++ 项目编译或链接过慢、CI 构建时间长、需要跨机器分摊编译负载。
限制:资料未提供各方案的具体加速倍数、兼容性矩阵与平台支持细节;部分命令与配置需按实际环境调整。