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