Bazel은 다양한 옵션을 허용합니다. 경우에 따라 자주 변경되는 옵션도 있습니다 (예:
--subcommands
), 다른 빌드는 여러 빌드에서 동일하게 유지됩니다 (예:
--package_path
). 모든 빌드에 대해 변경되지 않은 옵션을 지정하지 않기 위해
(및 다른 명령어 포함) - 구성 파일에서
.bazelrc
입니다.
.bazelrc
파일은 어디에 있나요?
Bazel은 다음 위치에서 선택적 구성 파일을 찾습니다.
할 수 있습니다. 옵션은 이 순서대로 해석되므로
나중에 파일의 옵션이 이전 파일의 값을 재정의할 수 있습니다.
발생할 수 있습니다. 로드되는 파일을 제어하는 모든 옵션은
시작 옵션, 즉 bazel
다음에 발생해야 하며
를 입력합니다 (build
, test
등).
시스템 RC 파일(
--nosystem_rc
이 없는 경우)경로:
- Linux/macOS/Unixes의 경우:
/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/Unixes의 경우:
작업공간 RC 파일(
--noworkspace_rc
이 없는 경우)경로: 작업공간 디렉터리 (기본 디렉터리 옆)의
.bazelrc
WORKSPACE
파일).이 파일이 존재하지 않으면 오류가 아닙니다.
홈 RC 파일(
--nohome_rc
이 없는 경우)경로:
- Linux/macOS/Unixes의 경우:
$HOME/.bazelrc
- Windows의 경우:
%USERPROFILE%\.bazelrc
(있는 경우) 또는%HOME%/.bazelrc
이 파일이 존재하지 않으면 오류가 아닙니다.
- Linux/macOS/Unixes의 경우:
사용자 지정 RC 파일( <ph type="x-smartling-placeholder">
--bazelrc=file
</ph>이 플래그는 선택사항이지만 여러 번 지정할 수도 있습니다.
/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
파일은 행 기반이 되는 텍스트 파일입니다.
문법을 따릅니다. 빈 줄과 #
로 시작하는 줄 (주석)은 무시됩니다. 각
라인은 일련의 단어를 포함하며, 이 단어들은
사용하는 것을 배웠습니다.
가져오기
import
또는 try-import
로 시작하는 줄은 특수 행입니다. 이를 사용하여 로드하세요.
기타 'rc' 할 수 있습니다. 작업공간 루트의 상대 경로를 지정하려면 다음 안내를 따르세요.
import %workspace%/path/to/bazelrc
을 작성합니다.
import
와 try-import
의 차이점은 다음 조건 충족 시 Bazel이 실패한다는 것입니다.
import
대상 파일이 누락되었거나 읽을 수 없지만 try-import
대상의 경우 그렇지 않습니다.
파일에서 참조됩니다.
가져오기 우선순위:
- 가져온 파일의 옵션이 이전에 지정된 옵션보다 우선합니다. import 문을 엽니다.
- import 문 다음에 지정된 옵션은 옵션을 선택합니다.
- 나중에 가져온 파일의 옵션이 이전에 가져온 파일보다 우선 적용됩니다.
옵션 기본값
bazelrc에서 대부분의 줄은 기본 옵션 값을 정의합니다. 각 단어의 첫 단어는 줄은 이러한 기본값이 적용되는 시기를 지정합니다.
startup
: 시작 옵션으로, 명령어 앞에 위치하며 설명됩니다. (bazel help startup_options
)common
: 지원하는 모든 Bazel 명령어에 적용되어야 하는 옵션입니다. 있습니다. 명령이 이런 식으로 지정된 옵션을 지원하지 않는 경우, 일부 다른 Bazel 명령어에 유효한 한 무시됩니다. 이는 옵션 이름에만 적용됩니다. 현재 명령어가 지정된 이름을 가진 옵션이지만 지정된 값을 지원하지 않는 경우 실패합니다always
: 모든 Bazel 명령어에 적용되는 옵션입니다. 명령어가 지원하지 않는 경우 실패합니다.command
: Bazel 명령어(예:build
또는query
) 적용됩니다. 이 옵션은 지정할 수도 있습니다 예를 들어test
는build
에서 상속됩니다.
각 줄은 두 번 이상 사용할 수 있으며
첫 번째 단어는 마치 한 줄에 나타난 것처럼 결합됩니다. (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 파일 내에서는 특정성에 따라 우선순위가 결정됩니다. 특정 명령이 덜 구체적인 명령의 줄보다 우선합니다.
특수성은 상속으로 정의됩니다. 일부 명령어는 상속하는 명령어가 기본 명령어보다 더 구체적이 되고 명령어와 함께 사용하면 됩니다 예를 들어
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
에서 상속됨
- 모든 명령어는
동일한 특이성으로 동일한 명령에 대한 옵션을 지정하는 두 줄은 파일 내에 나타나는 순서대로 파싱됩니다.
이 우선순위 규칙은 파일 순서와 일치하지 않으므로 rc 파일 내에서 우선순위를 따르는 경우의 가독성:
common
옵션은 상단에 배치하고 가장 구체적인 명령어는 클릭하면 됩니다. 이렇게 하면 옵션을 읽는 순서가 적용되는 순서와 동일하므로 더 직관적입니다.
rc 파일의 줄에 지정된 인수에는 옵션이 아니라 빌드 대상의 이름 등입니다. 예를 들어 같은 파일에 지정된 옵션은 동위 옵션보다 우선순위가 낮습니다. 를 사용하고, 항상 비 옵션 인수를 사용합니다.
--config
옵션 기본값 설정 외에도 rc 파일을 사용하여 옵션을 그룹화할 수 있습니다.
공통 그룹화의 약식을 제공합니다. 이 작업은 :name
추가할 수 있습니다 이 옵션은 기본적으로 무시되지만
--config=name
옵션이 있는 경우 포함됩니다.
(명령줄 또는 .bazelrc
파일에서) 재귀적으로
다른 구성 정의가 있습니다 command:name
로 지정된 옵션은
관련 명령어에 대해 위에서 설명한 우선순위 순서로 펼쳐집니다.
--config=foo
는
rc 파일 'in-place' 이렇게 하면
구성에 지정된 옵션은 --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이 무시할 디렉터리를
행입니다. 항목은 작업공간 루트를 기준으로 합니다.
전역 bazelrc 파일
Bazel은 선택적 bazelrc 파일을 다음 순서로 읽습니다.
- etc/bazel.bazelrc
에 있는 시스템 rc-file
- $workspace/tools/bazel.rc
에 있는 작업공간 rc-file
- $HOME/.bazelrc
에서 로컬화된 홈 rc-file
여기에 나열된 각 bazelrc 파일에는 사용 중지에 사용할 수 있는 해당 플래그가 있습니다 (예: --nosystem_rc
, --noworkspace_rc
, --nohome_rc
). --ignore_all_rc_files
시작 옵션을 전달하여 Bazel이 모든 bazelrcs를 무시하도록 할 수도 있습니다.