BazelのBUILDファイルを理解する

2020/03/06

BAZEL C/C++ Googleサービス Linux RandomGrid Ubuntu 技術

t f B! P L

今回は短い記事で、というのもこの内容は他の説明から参照したい内容になるので、短く纏めておいて他の記事にリンクを貼ります。 Wikiや社内文書の構造も似たような構造にして書きます。 今までは個人のEvernoteに学習記録として残して文書構造をテストしながら社内資料に纏めていたのですが、せっかくBloggerも開設したし、 比較的新しい Bazel というビルドツールに対する知見の共有は公共性の高い内容でもありますので、 こちらにまとめさせていただいています。

BUILDファイルを理解する

元のドキュメントの参照先はここです。
ちょっと前置きで用語を補足解説しておきます。

 ターゲット 

通常のビルドターゲットという概念に加えて、 ビルドルールで言うところのnameオプションに設定される内容のことも指します。

BUILDファイルの役割

BUILDファイルは様々な指示をBazelに与えますが、最も重要なのはビルドルールの記述です。

ビルドルールは Bazel にどのような方法でビルドをするか、生成物をどのような形式にするか(バイナリなのか、ライブラリなのか、など)w教示します。
ビルドルールに記載したターゲットは、他のビルドルールから参照することも出来ます。 stage1の cpp-tutorial/stage1/main ディレクトリの中にある BUILDファイルを開いてみましょう。
以下のような内容が記載されています。

cc_binary(
    name = "hello-world",
    srcs = ["hello-world.cc"],
)
stage1の例では、Bazelのcc_binary ルールによって hello-world ターゲットのビルドルールを明示しています。

このルールによって Bazel は 依存関係のない hello-world.cc ファイルだけを用いて、実行可能なバイナリを作成します。 ターゲットの属性は、ビルドの成果物の形式や依存関係を明示します。

ルールを記載する際には、name 属性は必須でそれ以外の設定の有無は概ね任意のです。 

上記の hello-world の例では、
name それが何のビルドルールなのか、
srcs どのソースファイルを使用してビルドするのか、
という内容を Bazel に指示しています。

Translate

ページビューの合計

注意書き

基本的にごった煮ブログですので、カテゴリから記事を参照していただけると読みやすいかと存じます。

ADBlocker等を使用していると、Twitterやアクセスカウンタが表示されません。

記事を読むには差し支えませんが、情報を参照したい場合には一時例外にしていただけると全てご参照いただけます。

Featured Post

ボイドラDICEの攻略法

QooQ