使用 GN 建構 Electron
Electron 現在使用 GN 來建構自己。以下是關於原因的討論。
GYP 和 GN
當 Electron 在 2013 年首次發佈時,Chromium 的建構組態是使用 GYP 撰寫的,這是「Generate Your Projects」的縮寫。
在 2014 年,Chromium 專案引入了一個名為 GN 的新建構組態工具(這是「Generate Ninja」的縮寫)。Chromium 的建構檔案已遷移至 GN,而 GYP 已從原始程式碼中移除。
Electron 過去一直保持主要的 Electron 程式碼 和 libchromiumcontent 之間的區隔,libchromiumcontent 是 Electron 包裝 Chromium「content」子模組的部分。Electron 一直使用 GYP,而 libchromiumcontent(作為 Chromium 的子集)則在 Chromium 執行時切換至 GN。
就像齒輪沒有完全嚙合一樣,使用兩個建構系統之間存在摩擦。維護相容性容易出錯,編譯器旗標和 #defines
需要在 Chromium、Node、V8 和 Electron 之間仔細保持同步。
為了解決這個問題,Electron 團隊一直致力於將所有內容遷移到 GN。今天,從 Electron 中移除最後的 GYP 程式碼的 commit 已在 master 中完成。
這對您來說意味著什麼
如果您是 Electron 本身的貢獻者,則從 master
或 4.0.0 中簽出和建構 Electron 的過程與 3.0.0 及更早版本中的過程非常不同。有關詳細資訊,請參閱 GN 建構說明。
如果您正在使用 Electron 開發應用程式,您可能會在新版 Electron 4.0.0-nightly 中注意到一些微小的變更;但更有可能的是,Electron 的建構系統變更對您來說將是完全透明的。
這對 Electron 來說意味著什麼
GN 比 GYP 更快,而且其檔案更具可讀性和可維護性。此外,我們希望使用單一建構組態系統將減少將 Electron 升級到新版 Chromium 所需的工作量。