使用 GN 构建 Electron
Electron 现在使用 GN 进行构建。这里讨论了原因。
GYP 和 GN
Electron 最初发布于 2013 年,当时 Chromium 的构建配置是用 GYP 编写的,它是“Generate Your Projects”的缩写。
2014 年,Chromium 项目引入了一个名为 GN(“Generate Ninja”的缩写)的新构建配置工具。Chromium 的构建文件迁移到了 GN,并且 GYP 已从源代码中移除。
Electron 历史上一直将主要的 Electron 代码与 libchromiumcontent(Electron 中包装 Chromium 'content' 子模块的部分)分开。Electron 一直沿用 GYP,而 libchromiumcontent -- 作为 Chromium 的一个子集 -- 在 Chromium 切换到 GN 时也切换到了 GN。
就像两个不完全咬合的齿轮一样,使用这两种构建系统之间存在摩擦。维护兼容性容易出错,需要细致地在 Chromium、Node、V8 和 Electron 之间同步编译器标志和 #defines
。
为了解决这个问题,Electron 团队一直在努力将所有内容迁移到 GN。今天,从 Electron 中移除最后一个 GYP 代码的 提交 已合并到 master 分支。
这对您意味着什么
如果您为 Electron 本身做贡献,那么从 master
或 4.0.0 版本开始签出和构建 Electron 的过程与 3.0.0 及更早版本有很大不同。请参阅 GN 构建说明以获取详细信息。
如果您正在开发使用 Electron 的应用程序,那么在新版 Electron 4.0.0-nightly 中可能会注意到一些小的更改;但更有可能的是,Electron 构建系统的更改对您来说将是完全透明的。
这对 Electron 意味着什么
GN 比 GYP 更快,而且它的文件更易读、易维护。此外,我们希望使用单一的构建配置系统能够减少将 Electron 升级到新版本 Chromium 所需的工作量。