为速度而生的构建系统 - Ninja

2020-10-26 10:20:27 浏览数 (1)

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/

0 人点赞