使用 GN 建置 Electron
Electron 現在使用 GN 建置自身。以下討論原因。
GYP 和 GN
當 Electron 在 2013 年首次發布時,Chromium 的建置配置是使用 GYP 編寫的,GYP 是「Generate Your Projects」(產生您的專案)的縮寫。
在 2014 年,Chromium 專案引入了一個新的建置配置工具,稱為 GN(GN 是「Generate Ninja」(產生 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 所需的工作。