Ninja (構建系統)
Ninja是一個專注於速度的小型構建系統[2],由Evan Martin於2010年在Chrome團隊工作時開發。
原作者 | Evan Martin |
---|---|
當前版本 |
|
源代碼庫 | https://github.com/ninja-build/ninja.git |
編程語言 | C++,Python |
操作系統 | Linux,macOS,Windows |
許可協議 | Apache License 2.0 |
網站 | https://ninja-build.org/ |
背景
Evan Martin從2007年到2012年在Chrome團隊工作。在加入初期,Chrome只能夠在Windows上運行,他的主要任務是把代碼移植到其它平台,而面臨的第一個任務就是確定構建系統。
Chrome團隊的成員提出了GYP增量解決方案,它的作用是從高級的描述規則生成平台相關的構建文件。
在Linux上,他最開始嘗試把Scons作為GYP的目標構建系統,但當文件發生變化,啟動構建就需要花費30秒時間。因為他的工作是移植代碼,涉及到頻繁的更改文件和重新編譯,所以這被認為是不可接受的。
後來,他又嘗試make作為GYP的目標構建系統。在剛開始的時候速度相當快,但當文件越來越多時,它變慢了。後來,他注意到make中的一些問題,覺得可以優化,因此有了開發Ninja的想法。[3]
在使用Ninja後,修改文件後Chrome增量構建的時間降到了6秒鐘。
使用「Ninja」命名是因為作者覺得它速度很快。[4]
文件生成器
GYP、CMake和Meson支持生成Ninja構建文件。[5]
除了通用的生成器外,許多項目使用專用的腳本來生成構建文件。[6]
用戶
Ninja的用戶包括了一些著名的大型項目[5]:
參考資料
- ^ Release 1.12.1. 2024年5月11日 [2024年5月23日].
- ^ Ninja, a small build system with a focus on speed. ninja-build.org. [2019-09-30]. (原始內容存檔於2019-10-08).
- ^ The Performance of Open Source Software | Ninja. www.aosabook.org. [2019-09-30]. (原始內容存檔於2019-10-03).
- ^ Chromium Notes: Ninja, a new build system. neugierig.org. [2019-09-30]. (原始內容存檔於2019-09-30).
- ^ 5.0 5.1 The Ninja build tool [LWN.net]. lwn.net. [2019-09-30]. (原始內容存檔於2019-11-15).
- ^ List of generators producing ninja build files, ninja-build,Github, 2019-09-30 [2019-09-30], (原始內容存檔於2019-06-03)