Protokol Arabelleği Kuralları

Sorun bildir Kaynağı görüntüle Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Kurallar

cc_proto_library

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

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

deps, proto_library kurallarını işaret etmelidir.

Ö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

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

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

java_lite_proto_library

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

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

deps, proto_library kurallarını işaret etmelidir.

Ö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

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

Java kodu oluşturmak için proto_library kurallarının listesi.

java_proto_library

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

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

deps, proto_library kurallarını işaret etmelidir.

Ö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

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

Java kodu oluşturmak için proto_library kurallarının listesi.

proto_library

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

Birden fazla dilde kullanılabilen protokol arabellekleri kitaplıklarını tanımlamak için proto_library kullanın. proto_library, java_proto_library gibi desteklenen kuralların deps ifadesinde listelenebilir.

Komut satırında derlendiğinde proto_library, foo-descriptor-set.proto.bin adlı bir dosya oluşturur. Bu dosya, kuralın kaynak oluşturduğu iletilerin tanımlayıcı kümesidir. Dosya, https://developers.google.com/protocol-buffers/docs/techniques#self-description adresinde açıklanan bir serileştirilmiş FileDescriptorSet.

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

Önerilen kod düzeni:

  • .proto dosyası başına bir proto_library kuralı.
  • foo.proto adlı bir dosya, aynı pakette bulunan foo_proto adlı bir kuralda yer alacak.
  • foo_proto adlı bir proto_library öğesini sarmalayan [language]_proto_library öğesine foo_[language]_proto adı verilmelidir ve aynı pakette yer almalıdır.

Bağımsız değişkenler

Özellikler
name

Ad; zorunlu

Bu hedef için benzersiz bir ad.

deps

Etiket 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

Etiket 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 listedir. srcs alanının boş olabileceği bir kullanım alanı, alias-library'dir. Bu, deps içinde bir veya daha fazla başka proto_library bulunan bir proto_library kuralıdır. 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 yeniden dışa aktarılmasını veya listelenen paketlerden birinde olmayan lang_proto_library'de kullanılmasını engelleyen isteğe bağlı bir izin verilenler listesi.
exports

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

Proto kaynağında "import public" aracılığıyla referans verilebilecek proto_library hedeflerinin listesi. "import public" ifadesini kullanıp dışa aktarma özelliğinde ilgili kitaplığı listelemezseniz bu bir hatadır. Henüz tüm lang_proto_library uygulamaları değiştirilmediğinden kitaplığı hem bağımlılıklar hem de dışa aktarmalar listesine eklemeniz gerektiğini unutmayın.
import_prefix

Dize; varsayılan değer ""

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

Ayarlanmışsa 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 "/"

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

Ayarlanmışsa bu kuralın srcs özelliğindeki .proto kaynak dosyalarına, bu önek kesilmiş şekilde yollarından erişilebilir.

Göreceli bir yolsa (eğik çizgiyle başlamıyorsa) paketle ilgili bir yol olarak kabul edilir. 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, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
`.proto` dosyalarından Python kitaplıkları oluşturmak için `py_proto_library` kullanın. `proto_library` kuralı olan `foo_proto` sarmalandığında `py_proto_library` kuralına `foo_py_pb2` adı verilir. `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

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

Python kitaplıklarının oluşturulacağı `proto_library` kurallarının listesi. Genellikle bu, yalnızca bir hedeftir: ilgilenilen proto kitaplığı. Bu, "ProtoInfo" sağlayan herhangi bir hedef olabilir.

proto_lang_toolchain

Kural kaynağını görüntüleme
proto_lang_toolchain(name, allowlist_different_package, aspect_hints, blacklisted_protos, command_line, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, mnemonic, output_files, package_metadata, 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şaretlerini kullanarak hangi araç zincirinin kullanılacağını belirtmeye olanak tanır. Bu kurallar hakkında bilgi edinmek için belgelerine bakın.

Java derleyicinizi ayarlamak istemediğiniz sürece normalde bu tür kurallar yazmamalısınız.

Derleyici yoktur. Proto derleyici, bağladığımız proto_library kuralından alınır. Blaze'e komut satırı işareti olarak iletilir. Bazı özellikler için proto_library kuralında proto derleyicinin çağrılması gerekir. LANG_proto_library'nin kullandığı derleyicinin proto_library ile aynı olmasını zorunlu kılmak faydalıdır.

Örnekler

Basit bir örnek:


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

Etiket 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ğlanmış .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/eklentiye özgü kısımları ekleyin (ör. -I parametrelerini eklemeyin).
  • $(OUT), LANG_proto_library'ye özgüdür. Kuralların, bu değişkeni nasıl yorumladıklarını tanımlamaları beklenir. Örneğin Java'da $(OUT) yerine oluşturulacak src-jar dosya adı kullanılır.
mnemonic

Dize; varsayılan değer "GenProto"

Bu değer, protoc işleminde anımsatıcı olarak ayarlanır.
output_files

Dize; varsayılan değer "legacy"

command_line içindeki $(OUT) öğesinin nasıl biçimlendirileceğini kontrol eder. Bu biçimlendirme, tek bir dosyanın yolu veya birden fazla dosya olması durumunda çıkış dizini şeklinde olabilir. Olası değerler: "single", "multiple".
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 ""

Bu değer sağlanırsa eklentiyi kullanmak 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}"

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 özgüdür. Örneğin Java, çalışma zamanına göre derlenmelidir.
toolchain_type

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

proto_toolchain

Kural kaynağını görüntüleme
proto_toolchain(name, aspect_hints, command_line, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, mnemonic, output_files, package_metadata, 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"

mnemonic

Dize; varsayılan değer "GenProtoDescriptorSet"

output_files

Dize; varsayılan değer "single"

progress_message

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

proto_compiler

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