GNを使ったElectronのビルド
Electronは、自身のビルドにGNを使用するようになりました。その理由について説明します。
GYPとGN
Electronが2013年に初めてリリースされたとき、Chromiumのビルド設定は「Generate Your Projects」の略であるGYPで記述されていました。
2014年、ChromiumプロジェクトはGN(「Generate Ninja」の略)と呼ばれる新しいビルド設定ツールを導入しました。ChromiumのビルドファイルはGNに移行され、GYPはソースコードから削除されました。
Electronは、これまでメインのElectronコードと、Chromiumの「content」サブモジュールをラップするElectronの一部であるlibchromiumcontentを分けてきました。ChromiumのサブセットであるlibchromiumcontentはChromiumと同様にGNに切り替えましたが、ElectronはGYPを使い続けてきました。
噛み合わない歯車のように、2つのビルドシステムを使用することには摩擦がありました。互換性を維持することは、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にアップグレードするために必要な作業が削減されることを期待しています。