メインコンテンツにスキップ

GNを使ったElectronのビルド

·読むのに2分

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にアップグレードするために必要な作業が削減されることを期待しています。

  • Chromium 67ではMSVCのサポートが削除され、WindowsでのビルドにClangが使用されるようになったため、Electron 4.0.0の開発にすでに役立っています。GNビルドでは、Chromiumからすべてのコンパイラコマンドを直接継承するため、WindowsでのClangビルドを無料で入手できました。

  • また、Electron、Chromium、Node全体でBoringSSLを統一ビルドで使用することが容易になりました。これは以前は問題でした