Protokol Arabelleği Kuralları

Sorun bildir Kaynağı görüntüle Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Kurallar

cc_proto_library

Kural kaynağını görüntüleme
cc_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

cc_proto_library, .proto dosyalarından C++ kodu oluşturur.

deps, proto_library kurallarına yönlendirmelidir.

Örnek:


cc_library(
    name = "lib",
    deps = [":foo_cc_proto"],
)

cc_proto_library(
    name = "foo_cc_proto",
    deps = [":foo_proto"],
)

proto_library(
    name = "foo_proto",
)

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

Bu hedef için benzersiz bir ad.

deps

Etiketler listesi; varsayılan değer []'dir.

C++ kodu oluşturmak için kullanılacak proto_library kurallarının listesi.

java_lite_proto_library

Kural kaynağını görüntüleme
java_lite_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

java_lite_proto_library, .proto dosyalarından Java kodu oluşturur.

deps, proto_library kurallarına yönlendirmelidir.

Örnek:


java_library(
    name = "lib",
    runtime_deps = [":foo"],
)

java_lite_proto_library(
    name = "foo",
    deps = [":bar"],
)

proto_library(
    name = "bar",
)

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

Bu hedef için benzersiz bir ad.

deps

Etiketler listesi; varsayılan değer []'dir.

Java kodu oluşturmak için kullanılacak proto_library kural listesi.

java_proto_library

Kural kaynağını görüntüleme
java_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

java_proto_library, .proto dosyalarından Java kodu oluşturur.

deps, proto_library kurallarına yönlendirmelidir.

Örnek:


java_library(
    name = "lib",
    runtime_deps = [":foo_java_proto"],
)

java_proto_library(
    name = "foo_java_proto",
    deps = [":foo_proto"],
)

proto_library(
    name = "foo_proto",
)

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

Bu hedef için benzersiz bir ad.

deps

Etiketler listesi; varsayılan değer []'dir.

Java kodu oluşturmak için kullanılacak proto_library kural listesi.

proto_library

Kural kaynağını görüntüleme
proto_library(name, deps, srcs, data, allow_exports, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exports, features, import_prefix, licenses, restricted_to, strip_import_prefix, tags, target_compatible_with, testonly, toolchains, visibility)

Bazel kullanıyorsanız lütfen kuralı https://github.com/bazelbuild/rules_proto adresinden yükleyin.

Birden fazla dilde kullanılabilecek protokol arabellek kitaplıklarını tanımlamak için proto_library kullanın. proto_library, desteklenen kuralların deps yan tümcesinde listelenir (ör. java_proto_library).

Komut satırında derlendiğinde proto_library, foo-descriptor-set.proto.bin adlı bir dosya oluşturur. Bu dosya, kuralın kaynak olarak belirttiği iletiler için ayarlanan tanımlayıcıdır. Dosya, https://developers.google.com/protocol-buffers/docs/techniques#self-description adresinde açıklanan serileştirilmiş bir FileDescriptorSet dosyasıdır.

Yalnızca bir proto_library kuralı tarafından doğrudan bahsedilen .proto dosyalarıyla ilgili bilgileri içerir. Geçiş tanımlayıcı kümesi koleksiyonu, [ProtoInfo].transitive_descriptor_sets Starlark sağlayıcısı aracılığıyla kullanılabilir. proto_info.bzl adresindeki dokümanlara göz atın.

Önerilen kod düzenlemesi:

  • .proto dosyası başına bir proto_library kuralı.
  • foo.proto adlı bir dosya, aynı pakette bulunan foo_proto adlı bir kuralda yer alır.
  • foo_proto adlı bir proto_library'u sarmalayan [language]_proto_library, foo_[language]_proto olarak adlandırılmalı ve aynı pakette bulunmalıdır.

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

Bu hedef için benzersiz bir ad.

deps

Etiketler listesi; varsayılan değer []'dir.

Hedefin bağlı olduğu diğer proto_library kurallarının listesi. Bir proto_library yalnızca diğer proto_library hedeflerine bağlı olabilir. Dile özgü kitaplıklara bağlı olmayabilir.
srcs

Etiketler listesi; varsayılan değer []'dir.

Hedefi oluşturmak için işlenen .proto ve .protodevel dosyalarının listesi. Bu genellikle boş olmayan bir listetir. srcs değerinin boş olabileceği bir kullanım alanı takma ad kitaplığıdır. Bu, deps içinde bir veya daha fazla proto_library içeren bir proto_library kuralı. Bu kalıp, örneğin herkese açık bir API'yi kalıcı bir ad altında dışa aktarmak için kullanılabilir.
allow_exports

Etiket; varsayılan değer None'dir.

Proto kitaplığının, listelenen paketlerden birinde bulunmayan lang_proto_library içinde yeniden dışa aktarılmasını veya kullanılmasını engelleyen isteğe bağlı izin verilenler listesi.
exports

Etiketler listesi; varsayılan değer []'dir.

Proto kaynağında "import public" aracılığıyla referans verilebilen proto_library hedeflerinin listesi. "Herkese açık olarak içe aktar"ı kullanıyorsanız ancak dışa aktarma özelliğinde ilgili kitaplığı listelemiyorsanız hata oluşur. Henüz tüm lang_proto_library uygulamaları değiştirilmediğinden, kütüphaneyi hem deps hem de exports içinde listelediğinizi unutmayın.
import_prefix

Dize; varsayılan değer ""'tir

Bu kuraldaki .proto dosyalarının yollarına eklenecek ön ek.

Bu özellik ayarlandığında, bu kuralın srcs özelliğindeki .proto kaynak dosyalarına, bu özelliğin değerinin depoya göre yollarına eklenmesiyle erişilebilir.

Bu ön ek eklenmeden önce strip_import_prefix özelliğindeki ön ek kaldırılır.

strip_import_prefix

Dize; varsayılan değer "/"'tir

Bu kuraldaki .proto dosyalarının yollarından kaldırılacak ön ek.

Bu ayar etkinleştirildiğinde, bu kuralın srcs özelliğindeki .proto kaynak dosyalarına, bu ön ek kaldırılmış olarak yollarında erişilebilir.

Göreli bir yolsa (eğik çizgiyle başlamayan) pakete göreli bir yol olarak alınır. Mutlak bir yol ise depoya göreli yol olarak anlaşılır.

import_prefix özelliğindeki ön ek, bu ön ek kaldırıldıktan sonra eklenir.

py_proto_library

Kural kaynağını görüntüleme
py_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
``.proto`` dosyalarından Python kitaplıkları oluşturmak için "py_proto_library"i kullanın. "proto_library" kuralı "foo_proto"yu sarmalıyorsa "py_proto_library" kuralının adı "foo_py_pb2" olmalıdır. "deps", bir "proto_library" kuralını işaret etmelidir. Örnek: ```starlark py_library( name = "lib", deps = [":foo_py_pb2"], ) py_proto_library( name = "foo_py_pb2", deps = [":foo_proto"], ) proto_library( name = "foo_proto", srcs = ["foo.proto"], ) ```

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

Bu hedef için benzersiz bir ad.

deps

Etiketler listesi; varsayılan değer []'dir.

Python kitaplığı oluşturmak için kullanılacak "proto_library" kurallarının listesi. Genellikle bu tek bir hedeftir: İlgilenilen proto kütüphanesi. "ProtoInfo" sağlayan herhangi bir hedef olabilir.

proto_lang_toolchain

Kural kaynağını görüntüleme
proto_lang_toolchain(name, allowlist_different_package, blacklisted_protos, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, mnemonic, output_files, plugin, plugin_format_flag, progress_message, protoc_minimal_do_not_use, restricted_to, runtime, tags, target_compatible_with, testonly, toolchain_type, toolchains, visibility)

Bazel kullanıyorsanız lütfen kuralı https://github.com/bazelbuild/rules_proto adresinden yükleyin.

Bir LANG_proto_library kuralının (ör. java_proto_library) proto-derleyiciyi çağırmalıdır. Bazı LANG_proto_library kuralları, komut satırı işaretçileri kullanılarak hangi araç zincirinin kullanılacağını belirtmeye olanak tanır. Bu kuralların belgelerine bakın.

Java derleyicinizi ayarlamak istemiyorsanız genellikle bu tür kurallar yazmamalısınız.

Derleyici yoktur. Proto derleyici, eklediğimiz proto_library kuralından alınır. Bu parametre, Blaze'a komut satırı işareti olarak iletilir. Bazı özellikler, proto_library kuralının kendisinde bir proto-derleyicinin çağrılmasını gerektirir. LANG_proto_library tarafından kullanılan derleyicinin, proto_library tarafından kullanılan derleyiciyle aynı olmasını zorunlu kılmak faydalıdır.

Örnekler

Basit bir örnek verelim:


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

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

Bu hedef için benzersiz bir ad.

allowlist_different_package

Etiket; varsayılan değer None'dir.

blacklisted_protos

Etiketler listesi; varsayılan değer []'dir.

blacklisted_protos öğesinin srcs özelliğindeki dosyalar için kod oluşturulmaz. Bu, any.proto gibi proto çalışma zamanlarına zaten bağlı olan .proto dosyaları için kullanılır.
command_line

Dize; zorunlu

Bu değer, kodu oluşturmak için proto-derleyiciye iletilir. Yalnızca bu kod oluşturucuya/eklentilere özgü bölümleri ekleyin (ör. -I parametrelerini eklemeyin)
  • $(OUT), LANG_proto_library'ye özgüdür. Kurallar bu değişkeni nasıl yorumladıklarını tanımlamalıdır. Örneğin, Java için $(OUT) oluşturulacak src-jar dosya adıyla değiştirilir.
mnemonic

Dize; varsayılan değer "GenProto"'tir

Bu değer, protoc işleminde kısa kod olarak ayarlanır.
output_files

Dize; varsayılan değer "legacy"'tir

command_line içindeki $(OUT) değerinin nasıl biçimlendirileceğini kontrol eder. Bu değer, tek bir dosyanın yolu veya birden fazla dosya varsa çıkış dizini olabilir. Olası değerler: "tek", "çoklu".
plugin

Etiket; varsayılan değer None'dir.

Sağlanırsa proto derleyiciyi çağıran işleme sunulur ve proto derleyiciye iletilir: --plugin=protoc-gen-PLUGIN=<executable>.
plugin_format_flag

Dize; varsayılan değer ""'tir

Bu değer sağlanırsa eklentinin kullanılması için proto-derleyiciye iletilir. Değer, eklenti yürütülebilir dosyasıyla değiştirilen tek bir %s içermelidir. --plugin=protoc-gen-PLUGIN=<executable>.
progress_message

Dize; varsayılan değer "Generating proto_library %{label}"'tir

Bu değer, protoc işleminde ilerleme mesajı olarak ayarlanır.
protoc_minimal_do_not_use

Etiket; varsayılan değer None'dir.

runtime

Etiket; varsayılan değer None'dir.

Oluşturulan kodun derlendiği dile özgü bir kitaplık. Tam davranış, LANG_proto_library'ye özeldir. Örneğin, Java çalışma zamanında derlenmelidir.
toolchain_type

Etiket; varsayılan değer None'dir.

proto_toolchain

Kural kaynağını görüntüleme
proto_toolchain(name, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, mnemonic, output_files, progress_message, proto_compiler, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

Bu hedef için benzersiz bir ad.

command_line

Dize; varsayılan değer "--descriptor_set_out=%s"'tir

mnemonic

Dize; varsayılan değer "GenProtoDescriptorSet"'tir

output_files

Dize; varsayılan değer "single"'tir

progress_message

Dize; varsayılan değer "Generating Descriptor Set proto_library %{label}"'tir

proto_compiler

Etiket; varsayılan değer None'dir.