エピソード 7: ブルース ドーソン、ワシントン州シアトル(2019 年 10 月)
前のエピソード
場合によっては、単一の Chromium ソースファイルを手動でコンパイルすると便利です。 コンパイラ最適化オプションを試したり マクロの微妙な細部を理解したり 発生しました。
いくつかのコツを使用すると、Chromium デベロッパーは は、特定のソースファイルを必要に応じて編集してコンパイルします。
まず出力ディレクトリに移動し、autoninja(または ninja)を使用して
^
サフィックスを使用して対象のファイル(および依存関係)をコンパイルします。
この接尾辞を使用すると、ninja は指定された file—version.o
の出力をビルドするよう指示できます。
場合もあるでしょう。次に、ファイルをタップして、
-v
(詳細)フラグを ninja に設定します。
Linux または OSX の場合:
autoninja ../../base/version.cc^
touch ../../base/version.cc
autoninja -v ../../base/version.cc^
Windows cmd シェルでは ^
は特殊文字であるため、エスケープする必要があります。
C:\> autoninja ../../base/version.cc^^
C:\> touch ../../base/version.cc
C:\> autoninja -v ../../base/version.cc^^
autoninja -v
コマンドの一般的な出力は次のようになります(
カット):
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo /showIncludes -imsvc ...
このコマンドを使用すると、目的のファイルをコンパイルできます。前処理されたモデルを 次の手順を実施します
Linux または OSX では、末尾から -o obj/base/base/version.o
ブロックを削除します。
-E
を追加します。これにより、コンパイラは、前処理されたファイルを
stdout です。
出力をファイルにリダイレクトします。次に例を示します。
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD ... -E >version.i
Windows の場合は、先頭から /showIncludes
オプションを削除します(
各 #include
の出力行)を作成し、/P
を追加して以下を行います。
ファイルをコンパイルする代わりに前処理します。結果は
version.i
のカレント ディレクトリ:
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo -imsvc ... /P
前処理されたファイルを調べて、マクロが実際に何をしているか確認してみましょう。 または試験運用版のコンパイラ スイッチの変更を行って再コンパイルすると、どうなるかがわかります。
参考情報
- Chrome の迅速なビルド: ビルドを最適化するためのその他のヒント (Windows が対象)。
- ETW: Chrome で Windows のパフォーマンスの問題を検出する方法をご確認ください またはビルドで、ETW(Xperf)ドキュメントを読みます。