使用 GN 构建 Electron
Electron 现在使用 GN 来构建自身。以下是关于原因的讨论。
GYP 和 GN
Electron 于 2013 年首次发布时,Chromium 的构建配置是用 GYP 编写的,GYP 是“生成您的项目”的缩写。
2014 年,Chromium 项目引入了一种名为 GN 的新构建配置工具(“生成 Ninja”的缩写)。Chromium 的构建文件迁移到 GN,而 GYP 从源代码中删除。
Electron 从历史上一直保持着主要 Electron 代码 和 libchromiumcontent(Electron 中包装 Chromium 的“内容”子模块的部分)之间的分离。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 新版本所需的工作量。