자주 묻는 질문(FAQ)

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

다음은 확장 프로그램 작성과 관련된 몇 가지 일반적인 문제와 질문입니다.

파일이 생성되지 않거나 작업이 실행되지 않는 이유는 무엇인가요?

Bazel은 requested 출력 파일을 생성하는 데 필요한 작업만 실행합니다.

  • 원하는 파일에 라벨이 있는 경우 다음과 같이 직접 요청할 수 있습니다. bazel build //pkg:myfile.txt

  • 파일이 대상의 출력 그룹에 있는 경우 출력 그룹을 만듭니다. bazel build //pkg:mytarget --output_groups=foo

  • 타겟이 를 사용하여 규칙의 기본 출력에 이를 추가하여 DefaultInfo 제공자를 반환합니다.

자세한 내용은 규칙 페이지를 참고하세요.

구현 함수가 실행되지 않는 이유는 무엇인가요?

Bazel은 빌드에 요청된 대상만 분석합니다. 해야 할 일 명령줄에서 타겟의 이름을 지정하거나 있습니다.

작업 또는 바이너리를 실행할 때 파일이 누락됨

1) 파일이 작업에 대한 입력으로 등록되어 있는지 확인합니다. 2) 실행 중인 스크립트 또는 도구가 찾을 수 있습니다.

작업의 경우 입력을 ctx.actions.* 함수에 전달하여 선언합니다. 확인할 수 있습니다. 파일의 올바른 경로는 File.path

바이너리의 경우 (실행 가능한 출력은 bazel run 또는 bazel test에서 실행됨) 명령어인 경우)를 사용하려면 입력을 runfiles을 사용합니다. path 필드를 사용하는 대신 File.short_path - 실행 파일 디렉토리에 저장됩니다

bazel build //pkg:mytarget에서 빌드할 파일을 제어하려면 어떻게 해야 하나요?

DefaultInfo 제공업체를 사용하여 다음 작업을 할 수 있습니다. 기본 출력을 설정합니다.

빌드 중에 프로그램을 실행하거나 파일 I/O를 수행하려면 어떻게 해야 하나요?

도구는 빌드의 다른 부분과 마찬가지로 대상으로 선언할 수 있습니다. 다른 대상 빌드를 돕기 위해 실행 단계 중에 실행됩니다. 작업 만들기 ctx.actions.run를 사용하여 도구를 executable 매개변수로 사용합니다.

로드 및 분석 단계에서는 도구를 실행할 수 없으며 파일 I/O입니다. 즉, BUILD의 콘텐츠를 제외한 도구와 파일 콘텐츠만 및 .bzl 파일)은 대상 및 작업 그래프가 생성되는 방식에 영향을 줄 수 없습니다.

실행 단계 전과 도중에 동일한 구조화된 데이터에 액세스해야 하는 경우에는 어떻게 해야 하나요?

구조화된 데이터를 .bzl 파일로 형식을 지정할 수 있습니다. 파일을 load()하여 다음을 실행할 수 있습니다. 로드 및 분석 단계에서 액세스할 수 있습니다 입력으로 전달하거나 실행 단계 중에 이 파일이 필요한 작업과 실행 파일에 실행할 수 있습니다.

Starlark 코드를 문서화하려면 어떻게 해야 하나요?

규칙 및 규칙 속성의 경우 삼중따옴표로 묶음)을 rule 또는 attr.*()doc 매개변수로 전달할 수 있습니다. 도우미용 함수와 매크로를 사용하려면 여기를 참고하세요. 규칙 구현 함수에는 일반적으로 자체 docstring이 필요하지 않습니다.

예상된 위치에 문자열 리터럴을 사용하면 자동화하기가 더 쉬워집니다. 도구를 사용하여 문서를 추출하는 방법을 알아봤습니다 문자열이 아닌 표준 댓글을 자유롭게 사용하세요. 코드 읽기에 도움이 될 수 있습니다