프로토콜 버퍼 규칙

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

규칙

proto_lang_toolchain

proto_lang_toolchain(name, blacklisted_protos, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, mnemonic, plugin, plugin_format_flag, progress_message, proto_compiler, restricted_to, runtime, tags, target_compatible_with, testonly, visibility)

지원이 중단되었습니다. https://github.com/bazelbuild/rules_proto를 대신 사용하세요.

LANG_proto_library 규칙 지정 방법 (예: java_proto_library)의 경우 proto 컴파일러가 호출되어야 합니다. 일부 LANG_proto_library 규칙에서는 명령줄 플래그를 사용하여 사용할 도구 모음을 지정할 수 있습니다. 문서를 참고하세요.

일반적으로 자바 컴파일러를 조정하지 않는 한 이러한 종류의 규칙을 작성하면 안 됩니다.

컴파일러가 없습니다. proto 컴파일러는 연결된 proto_library 규칙에서 가져옵니다. 명령줄 플래그로 Blaze에 전달됩니다. proto_library 규칙 자체에서 proto 컴파일러가 호출되어야 합니다. LANG_proto_library에서 사용하는 컴파일러가 proto_library에서와 동일한 컴파일러를 시행하는 것이 좋습니다.

간단한 예는 다음과 같습니다.

proto_lang_toolchain(
    name = "javalite_toolchain",
    command_line = "--javalite_out=shared,immutable:$(OUT)",
    plugin = ":javalite_plugin",
    runtime = ":protobuf_lite",
)

인수

속성
name

Name; required

이 타겟의 고유한 이름입니다.

blacklisted_protos

List of labels; optional

blacklisted_protossrcs 속성에 있는 파일의 코드는 생성되지 않습니다. 이미 proto 런타임에 연결된 .proto 파일(예: any.proto)에 사용됩니다.
command_line

String; required

이 값은 코드를 생성하기 위해 proto-compiler로 전달됩니다. 이 코드 생성기/플러그인과 관련된 부분만 포함합니다 (예: -I 매개변수 제외).
  • $(OUT)은 LANG_proto_library별입니다. 규칙은 이 변수를 해석하는 방법을 정의해야 합니다. 예를 들어 자바의 경우 $(OUT)가 src-jar 파일 이름으로 교체됩니다.
mnemonic

String; optional; default is "GenProto"

이 값은 프로토크 작업 시 니모닉으로 설정됩니다.
plugin

Label; optional

제공되는 경우 proto 컴파일러를 호출하는 작업에 사용할 수 있으며 proto 컴파일러에 전달됩니다. --plugin=protoc-gen-PLUGIN=.
plugin_format_flag

String; optional

제공되는 경우 이 값은 플러그인을 사용하도록 proto 컴파일러에 전달됩니다. 이 값에는 플러그인 실행 파일로 대체된 단일 %s가 포함되어야 합니다. --plugin=protoc-gen-PLUGIN=.
progress_message

String; optional; default is "Generating proto_library %{label}"

이 값은 protoc 작업의 진행률 메시지로 설정됩니다.
proto_compiler

Label; optional

proto 컴파일러 실행 파일입니다. 제공되는 경우 이 타겟은 코드를 생성하는 프로토 컴파일러로 사용됩니다.
runtime

Label; optional

생성된 코드를 컴파일하는 언어별 라이브러리입니다. 정확한 동작은 LANG_proto_library별입니다. 예를 들어, 자바는 런타임에 컴파일해야 합니다.

proto_library

proto_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exports, features, import_prefix, licenses, restricted_to, strip_import_prefix, tags, target_compatible_with, testonly, visibility)

지원이 중단되었습니다. 대신 https://github.com/bazelbuild/rules_proto를 사용하세요.

proto_library을 사용하여 여러 언어에서 사용할 수 있는 프로토콜 버퍼 라이브러리를 정의합니다. proto_library는 지원되는 규칙의 deps 절(예: java_proto_library)에 나열될 수 있습니다.

proto_library는 명령줄에 컴파일되면 규칙이 매핑되는 메시지의 설명어인 foo-descriptor-set.proto.bin이라는 파일을 만듭니다. 파일이 직렬화됨FileDescriptorSet 에 설명되어 있습니다. https://developers.google.com/protocol-buffers/docs/technologys#self-description 가 있는지 진단합니다.

여기에는 proto_library 규칙에서 직접 언급된 .proto 파일에 대한 정보만 포함됩니다. 전이 설명어 집합 수집은 [ProtoInfo].transitive_descriptor_sets Starlark 제공업체를 통해 사용할 수 있습니다. ProtoInfo.java의 문서를 참고하세요.

권장 코드 구성:

  • 파일 .protoproto_library 규칙 1개.
  • foo.proto라는 이름의 파일은 동일한 패키지에 있는 foo_proto이라는 규칙에 포함됩니다.
  • foo_proto라는 proto_library를 래핑하는 [language]_proto_libraryfoo_[language]_proto라고 하며 동일한 패키지에 있어야 합니다.

인수

속성
name

Name; required

이 타겟의 고유한 이름입니다.

deps

List of labels; optional

타겟이 종속된 다른 proto_library 규칙의 목록입니다. proto_library는 다른 proto_library 타겟에만 종속될 수 있습니다. 언어별 라이브러리에 종속되지 않을 수도 있습니다.
srcs

List of labels; optional

타겟을 생성하기 위해 처리되는 .proto.protodevel 파일의 목록입니다. 일반적으로 비어 있지 않은 목록입니다. srcs를 비워 둘 수 있는 한 가지 사용 사례는 alias-library입니다. proto_library 규칙은 deps에 하나 이상의 proto_library를 하나 이상 포함합니다. 이 패턴은 영구 이름으로 공개 API를 내보내는 데 사용할 수 있습니다.
exports

List of labels; optional

proto 소스에서 'import public'을 통해 참조할 수 있는 proto_library 대상 목록
import_prefix

String; optional

이 규칙에서 .proto 파일의 경로에 추가할 접두어입니다.

이 규칙의 srcs 속성에 있는 .proto 소스 파일은 저장소 상대 경로 앞에 추가된 이 속성의 값에 액세스할 수 있습니다.

strip_import_prefix 속성의 접두사는 이 접두사가 추가되기 전에 삭제됩니다.

strip_import_prefix

String; optional

이 규칙의 .proto 파일 경로에서 제거할 프리픽스입니다.

설정되면 이 규칙의 srcs 속성에 있는 .proto 소스 파일은 이 프리픽스가 잘린 상태로 경로에 액세스할 수 있습니다.

슬래시로 시작하지 않는 상대 경로인 경우 패키지 상대 경로로 사용됩니다. 절대 경로라면 저장소를 기준으로 하는 경로로 간주됩니다.

import_prefix 속성의 접두어는 이 접두어가 삭제된 후에 추가됩니다.