使用 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 时也切换了。
就像齿轮不能完全啮合一样,使用这两种构建系统会产生摩擦。从需要在 Chromium、Node、V8 和 Electron 之间仔细保持同步的编译器标志和 #defines,维护兼容性容易出错。
为了解决这个问题,Electron 团队一直在努力将所有内容迁移到 GN。今天,将 Electron 中最后 GYP 代码移除的 提交 已合并到主分支。
这对您意味着什么
如果您正在为 Electron 本身做贡献,从 master 或 4.0.0 检出并构建 Electron 的过程与 3.0.0 及更早版本相比大不相同。请参阅 GN 构建说明 以获取详细信息。
如果您正在开发使用 Electron 的应用程序,那么在新版 Electron 4.0.0-nightly 中可能会注意到一些小的更改;但更有可能的是,Electron 构建系统的更改对您来说将是完全透明的。
这对 Electron 意味着什么
GN 比 GYP 更快,并且其文件更易于阅读和维护。此外,我们希望使用单一构建配置系统可以减少将 Electron 升级到 Chromium 新版本所需的工作量。
