저장소, 작업공간, 패키지, 대상

문제 신고 <ph type="x-smartling-placeholder"></ph> 소스 보기 1박 · 7.2 · 7.1 · 7.0 · 6.5 · 6.4

Bazel은 디렉터리 트리에 구성된 소스 코드로 소프트웨어를 빌드합니다. 저장합니다 정의된 저장소 집합이 작업공간을 구성합니다. 출처 리포지토리의 파일은 패키지의 중첩된 계층 구조로 구성됩니다. 각 패키지는 일련의 관련 소스 파일 및 BUILD 파일. BUILD 파일은 빌드 가능한 소프트웨어 출력을 지정합니다. 소스입니다.

저장소

Bazel 빌드에 사용되는 소스 파일은 저장소에 구성됩니다. repos로 축약됨). 저장소는 다음 위치에 경계 마커 파일이 있는 디렉터리 트리입니다. 루트 경계 마커 파일은 MODULE.bazel, REPO.bazel 또는 (기존 컨텍스트, WORKSPACE 또는 WORKSPACE.bazel)

현재 Bazel 명령어가 실행되는 저장소를 main 저장소를 참조하세요. 기타(외부) 저장소는 저장소 규칙에 의해 정의됩니다. 자세한 내용은 외부 종속 항목 개요를 참고하세요.

작업공간

작업공간은 동일한 확인할 수 있습니다 여기에는 기본 저장소와 정의된 모든 외부 저장소 저장소

역사적으로 '저장소'의 개념은 및 'workspace' CANNOT TRANSLATE 뒤섞여 있습니다. '작업공간'이라는 용어 자주 사용되는 표현은 때로는 'repository'의 동의어로 사용되기도 합니다.

패키지

저장소에서 코드를 구성하는 기본 단위는 패키지입니다. 가 패키지는 관련 파일의 모음이며 파일이 업로드될 수 있는 방법에 대한 출력 아티팩트를 생성하는 데 사용됩니다

패키지는 이름이 BUILD 또는 BUILD.bazelBUILD 파일입니다. 가 패키지에는 디렉터리의 모든 파일과 그 아래의 모든 하위 디렉터리가 포함됩니다. BUILD 파일이 포함된 파일은 예외입니다. 이 정의에서는 파일 또는 디렉터리는 두 개의 다른 패키지에 속할 수 있습니다.

예를 들어 다음 디렉터리 트리에는 my/app라는 두 개의 패키지가 있습니다. 하위 패키지 my/app/tests가 있습니다. my/app/data는 패키지가 아니지만 my/app 패키지에 속한 디렉터리

src/my/app/BUILD
src/my/app/app.cc
src/my/app/data/input.txt
src/my/app/tests/BUILD
src/my/app/tests/test.cc

대상

패키지는 대상의 컨테이너로, 패키지의 BUILD 파일 대부분의 대상은 두 가지 주요 종류인 파일규칙 중 하나입니다.

파일은 다시 두 가지 종류로 나뉩니다. 소스 파일은 일반적으로 소스 파일에 의해 저장소에 체크인했습니다. 생성된 파일, 경우에 따라서는 파생 파일 또는 출력 파일이라고도 하며, 체크인되지는 않지만 소스 파일에서 생성됩니다.

두 번째 유형의 대상은 규칙을 사용하여 선언합니다. 각 규칙 인스턴스 는 입력 파일 세트와 출력 파일 세트 사이의 관계를 지정합니다. 이 규칙에 대한 입력은 소스 파일일 뿐만 아니라 있습니다.

규칙에 대한 입력이 소스 파일인지 또는 생성된 파일이 대부분의 케이스는 중요하지 않습니다. 중요한 것은 해당 파일의 콘텐츠입니다. 이 사실 복잡한 소스 파일을 BigQuery에서 생성한 파일로 쉽게 예를 들어 고도의 데이터를 수동으로 유지관리해야 하는 부담이 있는 경우 너무 번거로워지고 누군가가 프로그램을 작성하여 파생시킬 수 있습니다. 해당 파일의 소비자는 변경할 필요가 없습니다. 반대로 파일은 로컬 변경사항만 있는 소스 파일로 쉽게 대체될 수 있습니다.

규칙에 대한 입력에는 다른 규칙도 포함될 수 있습니다. 이러한 데이터의 정확한 의미는 관계는 종종 상당히 복잡하고 언어 또는 규칙에 의존하지만 직관적으로 간단합니다. C++ 라이브러리 규칙 A에는 다른 C++ 라이브러리가 있을 수 있습니다. B를 사용할 수도 있습니다. 이 종속 항목의 효과는 B의 헤더 파일이 B의 기호가 컴파일 중에 A에 제공되며, B의 런타임 데이터가 실행 중에 A에 제공됩니다.

모든 규칙의 불변은 규칙에 의해 생성된 파일이 항상 규칙 자체와 동일한 패키지 GCP 콘솔에서 파일을 생성할 수 없습니다. 있습니다. 규칙의 입력이 다른 규칙에서 입력되는 것은 드문 일이 아닙니다. 있습니다.

패키지 그룹은 특정 규칙을 적용할 수 있습니다 패키지 그룹은 package_group 함수로 정의됩니다. 그들은 이 세 가지 속성은 포함된 패키지 목록, 패키지 이름, 패키지 그룹을 만들 수 있습니다. 이러한 이름을 참조하는 데 허용되는 유일한 방법은 규칙의 visibility 속성 또는 다음의 default_visibility 속성에서 package 함수 파일을 생성하거나 사용하지 않습니다 자세한 내용은 자세히 알아보려면 package_group 문서를 참조하세요.

라벨