Ninja 是一个专注于速度的小型构建系统。
根据 [Chromium](http://neugierig.org/software/chromium/notes/2011/02/ninja.html) 的实际测试:在超过 30,000 个源文件的情况下,也能够在1秒钟内开始进行真正的构建。
与之相比,通过资深工程师进行编写的 Makefiles 文件也需要10-20秒才能开始构建。
设计哲学
Ninja 的设计哲学是通过包含描述依赖关系图的方式提供快速的构建。
设计目标
- 即使是非常大的项目,也能做到快速的增量构建(比如,chromium、Swift
- 获取最快的构建速度
Ninja VS Make
- 相同点
- 原理上,Ninja 和 Make 类似,通过文件时间戳来进行增量构建。
- 不同点
- make 具有各种高级功能,比如函数、内置规则。
- Ninja 舍弃了各种高级功能来实现快速的增量编译
是否需要迁移到 Ninja
原则上,如果你对自己的项目构建速度感觉满意,就不要用 Ninja
如何使用 Ninja
通常情况下,应该先通过 Cmake 等工具生成 Ninja 文件,再执行构建。
以 Swift 为例:
代码语言:javascript复制// 通过 Swift 的脚步生成 Ninja 构建文件
utils/build-script --release-debuginfo
cd ${SWIFT_BUILD_DIR}
// 执行构建 swift 组件
ninja swift
最后,附上官网传送门:https://ninja-build.org/