使用 GN 构建 Electron
Electron 现在使用 GN 构建自身。以下是关于原因的讨论。
GYP 和 GN
当 Electron 于 2013 年首次发布时,Chromium 的构建配置是用 GYP 编写的,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 代码的 提交 已合并到 master 分支。
这对您意味着什么
如果您正在为 Electron 本身做贡献,那么从 master
或 4.0.0 分支检出和构建 Electron 的过程与 3.0.0 及更早版本非常不同。请参阅 GN 构建说明 了解详细信息。
如果您正在使用 Electron 开发应用程序,您可能会在新 Electron 4.0.0-nightly 中注意到一些细微的变化;但更有可能的是,Electron 构建系统的更改对您来说将是完全透明的。
这对 Electron 意味着什么
GN 比 GYP 更快,并且其文件更具可读性和可维护性。此外,我们希望使用单一构建配置系统将减少将 Electron 升级到新版本 Chromium 所需的工作量。