Ninja (建構系統)

Ninja是一個專注於速度的小型建構系統[2],由Evan Martin於2010年在Chrome團隊工作時開發。

Ninja
Ninja
原作者Evan Martin
目前版本
  • 1.12.1(2024年5月11日;穩定版本)[1]
編輯維基數據鏈結
原始碼庫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、CMakeMeson支援產生Ninja建構檔案。[5]

除了通用的產生器外,許多專案使用專用的指令碼來產生建構檔案。[6]

使用者

Ninja的使用者包括了一些著名的大型專案[5]

參考資料

  1. ^ Release 1.12.1. 2024年5月11日 [2024年5月23日]. 
  2. ^ Ninja, a small build system with a focus on speed. ninja-build.org. [2019-09-30]. (原始內容存檔於2019-10-08). 
  3. ^ The Performance of Open Source Software | Ninja. www.aosabook.org. [2019-09-30]. (原始內容存檔於2019-10-03). 
  4. ^ Chromium Notes: Ninja, a new build system. neugierig.org. [2019-09-30]. (原始內容存檔於2019-09-30). 
  5. ^ 5.0 5.1 The Ninja build tool [LWN.net]. lwn.net. [2019-09-30]. (原始內容存檔於2019-11-15). 
  6. ^ List of generators producing ninja build files, ninja-build,Github, 2019-09-30 [2019-09-30], (原始內容存檔於2019-06-03) 

外部連結