工具
make https://www.gnu.org/software/make/
cmake
ninja
底层构建引擎(Build Engines)
这类工具是真正的“干活者”,它们直接读取规则文件(如 Makefile),解析依赖关系,并调用编译器(GCC、Clang、MSVC)将源码编译成目标文件。
GNU Make
- 控制文件:
Makefile - 特点: 最经典、最古老的构建工具。几乎存在于所有的类 Unix 系统中。
- 现状: 手写复杂的 Makefile 在现代大中型项目中已经很少见(维护成本极高),但它依然是小型单体项目或嵌入式开发的首选。
Ninja
- 控制文件:
build.ninja - 特点: 专为速度而生的构建引擎。
- 现状: 它的配置文件设计得非常低级(类似汇编语言),不推荐人类手写。通常由 CMake 或 Meson 自动生成。在大型项目(如 Chromium、LLVM)中,Ninja 比 Make 能显著缩短增量编译的等待时间。
元构建系统(Meta-Build Systems)
这类工具本身不直接调用编译器,而是根据高阶配置文件,生成底层构建引擎所需的输入文件(如 Makefile 或 build.ninja)。它们解决了跨平台配置的痛点。
CMake (绝对的行业事实标准)
- 地位: 目前 C/C++ 领域无可争议的统治者。几乎所有主流 IDE(VS Code、CLions、Visual Studio)都对其提供了原生或一流的插件支持。
- 语法: 独创的 CMake 脚本语言,语法较为晦涩、历史包袱重,常被开发者吐槽“难写难读”。
- 优点:
- 生态极度强大,绝大多数开源 C/C++ 库都原生支持 CMake。
- 跨平台支持极佳,能生成 Makefile、Ninja、MSBuild (VS Solution)、Xcode Project 等。
适用场景: 绝大多数中大型项目、开源项目、跨平台项目。