Bazel では多くのオプションを使用できます。頻繁に異なるオプションもあります(例:
--subcommands
など)と、複数のビルド(
--package_path
)。変更されていないオプションをすべてのビルドに指定しないようにするには、
などのコマンドを使用する場合、
.bazelrc
。
.bazelrc
ファイルはどこにありますか?
Bazel は次の場所でオプションの構成ファイルを探します。
下に示す順序です。オプションはこの順序で解釈されるため、
後続のファイルで指定されていたオプションが、以前のファイルの値をオーバーライドする場合があります。
対立が起きます。どのファイルを読み込むかを制御するオプションはすべて、
起動オプション。つまり、bazel
の後に実行し、
をコマンドの前に付けます(build
、test
など)。
システムの RC ファイル(
--nosystem_rc
が存在しない場合)。パス:
- Linux/macOS/Unix の場合:
/etc/bazel.bazelrc
- Windows の場合:
%ProgramData%\bazel.bazelrc
このファイルが存在しなくてもエラーにはなりません。
システム指定の別の場所が必要な場合は、カスタムの鍵を作成し、 Bazel バイナリ。
BAZEL_SYSTEM_BAZELRC_PATH
値をオーバーライドしています。//src/main/cpp:option_processor
。 システムが指定した場所には、環境変数の参照、 たとえば、Unix では${VAR_NAME}
、Windows では%VAR_NAME%
です。- Linux/macOS/Unix の場合:
Workspace の RC ファイル(
--noworkspace_rc
が存在しない場合)。パス: ワークスペース ディレクトリ(メインのディレクトリの隣)の
.bazelrc
WORKSPACE
ファイルなど)。このファイルが存在しなくてもエラーにはなりません。
ホーム RC ファイル(
--nohome_rc
が存在しない場合)。パス:
- Linux/macOS/Unix の場合:
$HOME/.bazelrc
- Windows の場合:
%USERPROFILE%\.bazelrc
(存在する場合)または%HOME%/.bazelrc
このファイルが存在しなくてもエラーにはなりません。
- Linux/macOS/Unix の場合:
ユーザー指定の RC ファイル(
--bazelrc=file
このフラグは省略可能ですが、複数回指定することもできます。
/dev/null
は、それ以降のすべての--bazelrc
が無視されることを示します。 は、リリースビルドなどでユーザー RC ファイルの検索を無効にするのに便利です。例:
--bazelrc=x.rc --bazelrc=y.rc --bazelrc=/dev/null --bazelrc=z.rc
x.rc
とy.rc
が読み取られます。- 以前の
/dev/null
により、z.rc
は無視されます。
このオプションの構成ファイルに加えて、Bazel はグローバル rc を探します。 表示されます。詳細については、グローバル bazelrc セクションをご覧ください。
.bazelrc
の構文とセマンティクス
すべての UNIX "rc".bazelrc
ファイルは、行ベースのテキスト ファイルです。
学習します。空の行と #
(コメント)で始まる行は無視されます。各
同じ単語に従ってトークン化された一連の単語が
Bourne Shell と同等です。
インポート
import
または try-import
で始まる行は特殊な行です。これらを使用して読み込む
その他の「rc」できます。ワークスペースのルートからの相対パスを指定するには、
import %workspace%/path/to/bazelrc
を書き込みます。
import
と try-import
の違いは、次の場合に Bazel が失敗することです。
import
のファイルがない(または読み取れない)が、try-import
のファイルがない
表示されます。
インポートの優先順位:
- インポートしたファイルのオプションは、以前に指定したオプションよりも優先されます 必要があります。
- import ステートメントの後に指定したオプションは、 オプションを指定します。
- 後からインポートしたファイルのオプションは、以前にインポートしたファイルよりも優先されます。
オプションのデフォルト
bazelrc のほとんどの行では、デフォルトのオプション値が定義されています。各単語の最初の単語は、 行には、これらのデフォルトがいつ適用されるかを指定します。
startup
: 起動オプション。コマンドの前に配置され、説明されます。 (bazel help startup_options
)common
: すべての Bazel コマンドに適用されるオプション。command
: オプションが適用される Bazel コマンド(build
やquery
など) 適用されます。これらのオプションは、継承されるすべてのコマンドに 実行されます。(たとえば、test
はbuild
から継承します)。
これらの各行は複数回使用でき、
最初の単語が 1 行にあるかのように結合されます。(CVS のユーザーは、
「スイス アーミーナイフ」が付いたコマンドを実行すると、
構文が .cvsrc
に似ています)。たとえば、次のようになります。
build --test_tmpdir=/tmp/foo --verbose_failures
build --test_tmpdir=/tmp/bar
組み合わせると、次のようになります。
build --test_tmpdir=/tmp/foo --verbose_failures --test_tmpdir=/tmp/bar
したがって、有効なフラグは --verbose_failures
と --test_tmpdir=/tmp/bar
です。
オプションの優先度:
- コマンドラインのオプションは、rc ファイルのオプションよりも常に優先されます。
たとえば、rc ファイルに
build -c opt
と記述されていて、コマンドライン フラグが-c dbg
の場合は、コマンドライン フラグが優先されます。 rc ファイル内では、優先順位は具体性によって決まります。 行よりも具体的なコマンドが優先されます。
特異性は継承によって定義されます。一部のコマンドは Pod 構成から 継承されるコマンドが基本コマンドよりも限定的になります。 使用できます。たとえば、
test
はbuild
コマンドを継承するため、すべてのbazel build
フラグがbazel test
に対して有効になり、すべてのbuild
行がbazel test
(同じオプションにtest
行がある場合を除く)。RC が ファイルの内容:test -c dbg --test_env=PATH
build -c opt --verbose_failures
この場合、
bazel build //foo
は-c opt --verbose_failures
を使用し、bazel test //foo
は--verbose_failures -c dbg --test_env=PATH
を使用します。継承(特異性)グラフは次のとおりです。
- すべてのコマンドは
common
から継承されます。 - 次のコマンドは、
build
:test
、run
、clean
、mobile-install
、info
、print_action
、config
、cquery
、aquery
coverage
はtest
から継承します。
- すべてのコマンドは
同じコマンドのオプションを同程度の特異性で指定する 2 行は、 ファイル内での出現順に解析されます。
この優先順位ルールはファイルの順序と一致しないため、 RC ファイル内の優先順位に従えば、読みやすくなります。
common
オプションがあり、末尾には最も具体的なコマンドが ファイルの最後にあります。このように、オプションが読み取られる順番は、 適用される順序と同じなので、より直感的です。
rc ファイルの 1 行に指定された引数には、 オプションを指定することはできません。たとえば 同じファイル内で指定されているオプションが、兄弟要素よりも優先度が低くなります。 指定され、常に非リソース引数の明示的なリストの先頭に オプション引数。
--config
rc ファイルを使用すると、オプションのデフォルトを設定するだけでなく、オプションをグループ化できる
一般的なグループ化の省略形もできますこれを行うには、:name
を追加します。
接頭辞が付加されます。これらのオプションはデフォルトで無視されますが、
オプション --config=name
が指定されている場合は含められ、
.bazelrc
ファイルでも再帰的に実行できます。さらに、ファイル内であっても、
別の構成定義を使用します。command:name
で指定されたオプションは、
上記の優先順位で、該当するコマンド用に展開されています。
--config=foo
は、定義されているオプションに展開されます。
rc ファイル「インプレース」オプションが
--config=foo
オプションと同じ優先順位になります。
あります。
この構文は、startup
を使用して設定することはできません。
起動オプション。設定
.bazelrc の startup:config-name --some_startup_option
は無視されます。
例
以下に、~/.bazelrc
ファイルの例を示します。
# Bob's Bazel option defaults
startup --host_jvm_args=-XX:-UseParallelGC
import /home/bobs_project/bazelrc
build --show_timestamps --keep_going --jobs 600
build --color=yes
query --keep_going
# Definition of --config=memcheck
build:memcheck --strip=never --test_timeout=3600
Bazel の動作を管理するその他のファイル
.bazelignore
ワークスペース内のディレクトリを指定できます
関係プロジェクトなど、Bazel で無視する範囲を指定します。
構築することもできますという名前のファイルを
ワークスペースのルートの .bazelignore
Bazel で無視するディレクトリを追加します(1 つずつ
追加します。エントリは、ワークスペースのルートからの相対位置になります。
グローバル bazelrc ファイル
Bazel は、オプションの bazelrc ファイルを次の順序で読み取ります。
- etc/bazel.bazelrc
にあるシステム rc-file。
- $workspace/tools/bazel.rc
にある Workspace rc-file
- ホーム RC ファイルは $HOME/.bazelrc
にローカライズ
ここに示す各 bazelrc ファイルには、無効化するために使用できる対応するフラグがあります(例: --nosystem_rc
、--noworkspace_rc
、--nohome_rc
)。--ignore_all_rc_files
起動オプションを渡すことで、Bazel ですべての bazelrc を無視することもできます。