GN を使って Electron を構築する
Electron は、GN を使用して自身を構築しています。 その理由についてこちらで説明します。
GYP と GN
2013 年、最初に Electron がリリースされたとき、Chromium のビルド構成は GYP で記述されていました。これは "Generate Your Projects" の略です。
2014 年、Chromium プロジェクトは GN ("Generate Ninja") を導入しました。Chromium のビルドファイルは GN に移行され、GYP はソースコードから削除されました。
歴史的に、Electron はメインの Electron コード と libchromiumcontent を分離しています。これは、Chromium の 'content' サブモジュールをラップする Electron の一部です。 Electron は GYP を使用し続けましたが、Chromium の方の libchromiumcontent は GN に切り替えました。
ピッタリ噛まない歯車のように、2 つのビルドシステムの間に摩擦がありました。 互換性の維持にはエラーが発生しやすくなりました。コンパイラフラグと #define
を 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 の新バージョンへアップグレードするにあたって必要な作業が軽減されるでしょう。