ビルドが成功すると、すべての依存関係が BUILD
ファイルに明示的に記述されます。Bazel はこれらのステートメントを使用してプロジェクトの依存関係グラフを作成します。これにより、正確な増分ビルドが可能になります。
サンプル プロジェクトの依存関係を可視化するには、ワークスペースのルートで次のコマンドを実行して、依存関係グラフのテキスト表現を生成します。
bazel query --notool_deps --noimplicit_deps "deps(//main:hello-world)" \
--output graph
上記のコマンドは、ターゲット //main:hello-world
のすべての依存関係(ホストと暗黙的な依存関係を除く)を検索し、出力をグラフとしてフォーマットするよう Bazel に指示します。
コピーしたテキストを GraphViz に貼り付けます。
Ubuntu では、GraphViz と xdot Dot Viewer をインストールすることで、グラフをローカルで表示できます。
sudo apt update && sudo apt install graphviz xdot
その後、上のテキスト出力を直線で xdot に連結することで、グラフを生成して表示できます。
xdot <(bazel query --notool_deps --noimplicit_deps "deps(//main:hello-world)" \
--output graph)
ご覧のとおり、サンプル プロジェクトの最初のステージには単一のターゲットがあり、これによって追加の依存関係なしで単一のソースファイルがビルドされます。
図 1. hello-world
の依存関係グラフには、1 つのソースファイルを持つ 1 つのターゲットが表示されます。
ワークスペースを設定し、プロジェクトをビルドし、その依存関係を確認したら、複雑さを増すことができます。