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)