BUILD
ファイルは、シンプルで宣言型になっています。通常は
一連のターゲット宣言で構成されます。コードベースと BUILD
として
ファイルが大きくなれば、おそらく次のような重複に気づくでしょう。
cc_library(
name = "foo",
copts = ["-DVERSION=5"],
srcs = ["foo.cc"],
)
cc_library(
name = "bar",
copts = ["-DVERSION=5"],
srcs = ["bar.cc"],
deps = [":foo"],
)
通常、BUILD
ファイルのコードの重複は問題ありません。これにより、ファイルの内容が
可読性があることを意味します。各宣言は、コンテキストなしで読んで理解できます。この
人間だけでなく外部ツールにとっても重要ですたとえば、
不足している依存関係を追加するために、ツールが BUILD
ファイルの読み取りと更新を行える場合があります。
コードのリファクタリングやコードの再利用により、このような
あります。
値を共有すると便利な場合(値の同期を維持する必要がある場合など)は、 次のように変数を導入できます。
COPTS = ["-DVERSION=5"]
cc_library(
name = "foo",
copts = COPTS,
srcs = ["foo.cc"],
)
cc_library(
name = "bar",
copts = COPTS,
srcs = ["bar.cc"],
deps = [":foo"],
)
複数の宣言で値 COPTS
が使用されるようになりました。慣例として、大文字を使用します。
グローバル定数の名前を指定します。
複数の BUILD ファイル間で変数を共有する
複数の BUILD
ファイルで値を共有する必要がある場合は、
.bzl
ファイルに指定します。.bzl
ファイルには定義(変数と関数)が含まれる
BUILD
ファイルで使用できるプロパティです。
path/to/variables.bzl
に次のように記述します。
COPTS = ["-DVERSION=5"]
次に、変数にアクセスできるように BUILD
ファイルを更新します。
load("//path/to:variables.bzl", "COPTS")
cc_library(
name = "foo",
copts = COPTS,
srcs = ["foo.cc"],
)
cc_library(
name = "bar",
copts = COPTS,
srcs = ["bar.cc"],
deps = [":foo"],
)