前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为速度而生的构建系统 - Ninja

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

作者头像
酷酷的哀殿
发布2020-10-26 10:20:27
2.6K0
发布2020-10-26 10:20:27
举报
文章被收录于专栏:酷酷的哀殿

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/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 酷酷的哀殿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 设计哲学
  • 设计目标
  • Ninja VS Make
  • 是否需要迁移到 Ninja
  • 如何使用 Ninja
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档