在 Linux 下做 C++ 编译/构建提速,可以从 编译器、构建系统、依赖管理、硬件利用、代码组织 几个层面入手。下面按“立竿见影 → 进阶优化 → 架构级”的顺序说明。
make -j$(nproc)
或 CMake:
cmake --build build -j$(nproc)
✅ 效果:通常是 3~10 倍提升
| 工具 | 特点 |
|---|---|
| Ninja | 比 Make 快很多(推荐) |
| Bazel | 大规模项目极强 |
| CMake + Ninja | 最常用组合 |
cmake -GNinja ..
ninja
export CC=clang
export CXX=clang++
或 CMake:
cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
sudo apt install ccache
export CC="ccache gcc"
export CXX="ccache g++"
✅ 二次编译可提速 5~50 倍
-O0 开发,-O2 发布开发阶段:
-O0 -g
发布阶段:
-O2 -DNDEBUG
❌ 避免开发时用 -O3
#include.cpp 放实现,不在头文件写实现适合大项目:
// stdafx.h
#include <vector>
#include <string>
CMake:
target_precompile_headers(app PRIVATE stdafx.h)
✅ 可提速 20%~40%
add_library(foo SHARED foo.cpp)
export module math;
⚠️ 需要 GCC 11+ / Clang 14+
export CC="distcc gcc"
适合:CI / 大团队
mkdir /tmp/build
mount -t tmpfs tmpfs /tmp/build
✅ I/O 瓶颈项目效果明显
// unity.cpp
#include "a.cpp"
#include "b.cpp"
✅ 减少头文件重复解析
❌ 不利于增量编译
开发环境推荐:
CMake + Ninja + Clang + ccache + PCH
命令示例:
cmake -GNinja -DCMAKE_CXX_COMPILER=clang++ ..
ninja
如果你愿意,我可以:
给你一套 定制提速方案。