クロムGNシステムの構築

GNクロムはビルドシステムに
ようやく午後五時16分35秒2017年6月23日にリリースされ、元の石雲水木は数6924コレクションが読み
打ち上げ
読むにクロムの最新のソースを、システムを構築するプロジェクトが完全にGNにGYPから切り替えられた発見しました。ソフトウェア開発では、人が多いアドバイスします。Doいない再作成してホイール。しかし、Googleはこれにもかかわらず、なぜ牛それを行う、一つの車輪1を作ったことがあり?なぜchromiumiプロジェクトのビルドシステムを投げるでしょうか?、GoogleのChromeブラウザは、単語を追求するので:速いです。高速ブラウザ、だけでなく、より高速なシステムを構築するための追求だけではなく。

システム導入を構築し
、最新のGNクロムビルドシステムについて説明する前に、ソフトウェア開発のビルドシステムを見直します。システムが提案されているソフトウェアのサイズの需要増加で構成されています。あなただけの少数のファイルに書かれたコード、ソースコードよりも通常小さいソフトウェア・プログラミング・トレーニングを、行う場合。たとえば、あなただけの、次のコマンドを実行し、コードをコンパイルするhelloworld.cファイルにコードの一部を記述します。

helloworld.cのgccの
1
いくつかは、DLL、実行可能コードへの最後のリンクをコンパイルしたい場合は、ソフトウェアの増加サイズは、その後もモジュール部門で、ソースコードファイルの数十があるかもしれない、といくつかの静的ライブラリにコンパイルします、その後、コマンドラインに伸ばし、我々はシステムを構築する必要があります。一般的なビルドシステムはGNUのメイクを持っています。ビルドシステムが最終的にツールチェーンコンパイルされたコードを呼び出し、そのようなチェーンのgccが、コンパイラルールの定義などのツールを置き換えるものではありませんことに留意すべきです。

さらに、複数のプラットフォームのサポートはGNU Makefileを書き込む必要がある場合は特に、ソフトウェアの規模を拡大すると面倒で退屈な、とエラーが発生しやすいだろう。そこで、このようなcmakeの、この構築物系がメタビルドシステム(メタビルドシステム)と呼ばれているようなautomakeのように、Makefileの生成ツールが登場。Linuxソフトウェアリポジトリの概念がまだ普遍的ではない、彼らは通常、我々はソフトウェアをインストールしたステップ:

./configureを
作る
make installを
1
2
3
最初のステップは、(ソフトウェアのインストールの多くのLinuxバージョンが同じではありません)システム環境に応じて、AutoToolツールを呼び出すGNU Makefileを生成することです。

ビルドシステム中のクロム
、私は数年前にクロムのオープンソースプロジェクトと接触していた、クロムは、メタビルドシステムで構築するシステム、(あなたのプロジェクトの生成)をGYPに使用されています。書き込みにGYPのソフトウェアエンジニアは、プロジェクトファイル(通常はGYP、gypiサフィックス)の建設の規則に従って、GYPツールはGYPファイルに従ってGNU Makefileを生成します。そして、プロジェクト全体は、クロム忍者のビルドシステムを持っていますが、これはGYP忍者を置き換えますが、GNUのメイクに代わるものではありません、Googleの公式声明による速度が数倍に向上しています。開発者のために、我々はそれが唯一の中間出力であるので、今、元GYPを作成する方法や書き方を、このようなシステムを構築するために忍者やGNUのMakefileについての詳細学ぶために、私たちは少し行うには忍者出現が必要ですが、ありませんビルドコマンドはほとんど変化しません。

最近のクロムのソースコードを見ては、お馴染みのGYPファイルがなくなっているの内側、(GNとGNIファイル名の接尾辞)GNファイル、解放に戻った夜の瞬間感に置き換えられました。しかし、少し研究のGNファイル、またはモジュールに精通した者、状況に応じて、その他の要素、およびGYP非常に異なるが、元GYPファイルよりも一般的に鋭くありません。

建設システムGN
GN要素は、建物のシステムは、忍者のビルドファイル(忍者ビルドファイル)を生成している、と比較GYPが、それは次のような利点があります。

もっと読みやすく、書き、維持しやすいです。
より速く、Googleの公式データに20倍の速さ。
GNは忍者忍者を実行すると、建物を構築する場合、ファイルが自動的に更新され、ファイルを変更しました。そこGYPを変更しますが、忍者のビルド恥ずかしいファイルを再構築するためにGYPを使用することを忘れていたときGYPは、以前に使用されました。
単純なモジュールの依存関係がpublic_depsを設け、GYPに、唯一つのターゲット依存性、モジュールの不必要な依存性を導入することが容易で複雑な依存、その結果、同様にdata_deps。
クエリモジュールの依存関係マップに優れたツールを提供します。これは、特定の依存関係またはほとんど不可能であるターゲットに依存しているモジュールを確認するにはどのモジュール、悪夢のGYPのビルドシステムです。
より良いサポートをデバッグします。変数値のGYPを印刷するために、私はまた、特にどのようにGNで>> << GYPビルドシステム変数の値を印刷するブログ記事を書いていた、我々は唯一のprint文を解決できる必要があります。
はじめに
GNを実行し
、実際にdepot_toolsあるスクリプトでコマンドラインGN、から実行し、depot_toolsパスが環境変数$ PATHに含まれていることを確認する必要があります。

コンフィギュレーションの建設
GYPで、2つの特定のディレクトリにそれぞれ、およびデバッグバージョンリリースバージョンを生成するためのDebugとReleaseディレクトリは、あります。GNでは、より柔軟な方法を使って、あなただけのテスト出力ディレクトリを定義し、そのような試験の場合と同様に、ディレクトリを指定するには、次のコマンドを使用することができます。

ゲンOUT GN /テスト
1
私が行う方法を、それぞれ、デバッグバージョンとリリースバージョンを構築したい場合に?GNは、パラメータを渡すことによって解決しました。言い換えれば、今光が最終的に出力ディレクトリによって決定されていないデバッグバージョンとリリースバージョン、およびビルドパラメータでは、配信に依存します。

伝送パラメータの構築
わずかビルドパラメータを設定するには、上記のコマンドを変更するには:

OUT GN /テスト引数
1
、ビルド・パラメータをリストするには、次のコマンドを使用することができますし、そのデフォルト値を使用できます。

引数--list OUT GN /テスト
1
ので、唯一のより一般的に使用されるパラメータのいくつかを知るために必要なすべてのパラメータを、覚えておく必要はありません、私は、非常に多くのパラメータ、クロム源で実行する複数の画面をオンにします:

= trueにis_component_build
is_debug = falseに
。1
2
動的パラメータの前のサブライブラリーのビルドかどうかを決定する、Android用クロムが今では数十からビルドを含み、その方法は、利点は、コードが変更されたビルド時間を節約することです。パラメータ決定の背後にビルド、デバッグまたはリリースバージョンのバージョンでした。

ビルドにコードを書くことから
、このようなテストhello_world.ccのコードファイルとして、/書き込みコード
上と同じディレクトリの下のコードに配置などの書き込みGNファイル、。

実行可能ファイル( "hello_world"){
ソース= [
"hello_world.cc"
]
}
1
2
3。
4。
5。
BUILD.gnが目標に依存追加ルート・ソースで開きます。

グループ( "ルート"){
DEPS = [
...
"// URL"、
"//テスト:hello_world"
]
}
。1
2
3。
4。
5。
6。
7。
//ルート代表源。

の構築

/デフォルトアウトGN GEN
/デフォルトhello_worldアウトニンジャ-C
アウト/デフォルト/ hello_world
1
2
3
调试
打印

static_library( "こんにちは"){
...
プリント(コンフィグ)
}
。1
2
3
4は
、構成情報をこの目標を印刷することができます。

表示対象の情報

DESC OUT GN / //テストデフォルト:hello_world
1は、
これは、より複雑なコマンドパラメータを通じて、あなたがマクロ定義がターゲット、ターゲットが依存するで定義されても見ることができ、ターゲットが依存、設定パラメータを含め、詳細な情報の多くが一覧表示されます次のようなツリー構造、

DESC OUT GN / //デフォルトベース:base_i18nは--treeのDEP
1つ
の説明以上のパラメータは、GNヘルプDESCを表示するために使用することができます。

概要
GNの長所と短所にも経験が深いではありませんが、ありませんので、ライトの複雑なGNファイルは、痛みのポイントの数GYPの深い感情のためので:
-ネストされた、ファイルの読み取りと変更することは困難GYPをリードし、クロムを考えませんビルド/ common.gypiどのようにひどいこのドキュメントの下で
-印刷サポート
-複雑な依存関係が効果的な見つけるための手段、およびトラブルシューティングの不足を

これは、それを急いGN、中に完璧なソリューションでしたが、また、Googleは、親指のために。それは、車輪の再発明されていますが、ホイールは簡単に元にああよりも使用するが!


参考書類
は何GN IS?
GNクイックスタートガイド
----------------
免責事項:この記事は、元の記事CSDNブロガー「クラウド水木石」であるとフォローCC 4.0 BY-SA著作権契約、複製、元のソースのリンクと、この文を添付してください。
オリジナルリンクします。https://blog.csdn.net/mogoweb/article/details/73650218

おすすめ

転載: www.cnblogs.com/bigben0123/p/12558003.html