変数の共有

<ph type="x-smartling-placeholder"></ph> 問題を報告する ソースを表示 夜間 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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"],
)