กฎบัฟเฟอร์ของโปรโตคอล

7.3 · 7.2 · 7.1 · 7.0 · 6.5

กฎ

py_proto_library

ดูแหล่งที่มาของกฎ
py_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
ใช้ `py_proto_library` เพื่อสร้างไลบรารี Python จากไฟล์ `.proto` ธรรมเนียมปฏิบัติคือตั้งชื่อกฎ `py_proto_library` เป็น `foo_py_pb2` เมื่อรวมกฎ `proto_library` ของ `foo_proto` `deps` ต้องชี้ไปยังกฎ `proto_library` ตัวอย่าง ```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"], ) ```

อาร์กิวเมนต์

Attributes
name

ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสําหรับเป้าหมายนี้

deps

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

รายการกฎ "Proto_library" ที่ใช้สร้างไลบรารี Python โดยปกติแล้วจะมีเพียงเป้าหมายเดียวเท่านั้น ได้แก่ ไลบรารีโปรโตที่สนใจ อาจเป็นเป้าหมายใดก็ได้ที่ให้ "ProtoInfo"

proto_lang_toolchain

ดูแหล่งที่มาของกฎ
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 โปรดโหลดกฎจาก https://github.com/bazelbuild/rules_proto

ระบุวิธีใช้กฎ LANG_proto_library (เช่น java_proto_library) ควรเรียกใช้โปรแกรมคอมไพล์ proto กฎ LANG_Pro_library บางกฎอนุญาตให้ระบุ Toolchain ที่จะใช้โดยใช้แฟล็กบรรทัดคำสั่งได้ โปรดศึกษาเอกสารประกอบ

โดยปกติ คุณไม่ควรเขียนกฎเหล่านั้นเว้นแต่จะต้องการปรับแต่งคอมไพเลอร์ Java

ไม่มีคอมไพเลอร์ คอมไพเลอร์โปรโตคอลนำมาจากกฎ proto_library ที่เราแนบไว้ ระบบจะส่งค่านี้ผ่านเป็น Flag บรรทัดคำสั่งไปยัง Blaze ฟีเจอร์หลายอย่างกำหนดให้ต้องเรียกใช้คอมไพเลอร์โปรโตในกฎ proto_library เอง การบังคับใช้คอมไพเลอร์ที่ LANG_proto_library ใช้ให้เหมือนกับคอมไพเลอร์ที่ใช้โดย proto_library มีประโยชน์

ตัวอย่าง

ตัวอย่างง่ายๆ มีดังนี้


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

อาร์กิวเมนต์

Attributes
name

ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสําหรับเป้าหมายนี้

allowlist_different_package

ป้ายกํากับ ค่าเริ่มต้นคือ None

blacklisted_protos

รายการป้ายกํากับ ค่าเริ่มต้นคือ []

ระบบจะไม่สร้างโค้ดสําหรับไฟล์ในแอตทริบิวต์ srcs ของ blacklisted_protos ใช้สำหรับไฟล์ .proto ที่ลิงก์กับรันไทม์ proto อยู่แล้ว เช่น any.proto
command_line

สตริง ต้องระบุ

ค่านี้จะส่งไปยังโปรโตคอมไพเลอร์เพื่อสร้างโค้ด ใส่เฉพาะส่วนที่เกี่ยวข้องกับเครื่องมือสร้างโค้ด/ปลั๊กอินนี้เท่านั้น (เช่น อย่าใส่พารามิเตอร์ -I)
  • $(OUT) เฉพาะ LANG_proto_library กฎควรกําหนดวิธีตีความตัวแปรนี้ เช่น สำหรับ Java ระบบจะแทนที่ $(OUT) ด้วยชื่อไฟล์ src-jar ที่จะสร้าง
mnemonic

สตริง ค่าเริ่มต้นคือ "GenProto"

ค่านี้จะตั้งเป็นการช่วยจำในการทำงานของโปรโตค
output_files

สตริง ค่าเริ่มต้นคือ "legacy"

ควบคุมการจัดรูปแบบ $(OUT) ใน command_line โดยระบุเส้นทางไปยังไฟล์เดียวหรือไดเรกทอรีเอาต์พุตในกรณีที่มีไฟล์หลายไฟล์ ค่าที่เป็นไปได้คือ "single", "multiple"
plugin

ป้ายกำกับ ค่าเริ่มต้นคือ None

หากระบุไว้ ข้อมูลต่อไปนี้จะพร้อมใช้งานสําหรับการดำเนินการที่เรียกใช้คอมไพเลอร์โปรโต และระบบจะส่งต่อข้อมูลดังกล่าวไปยังคอมไพเลอร์โปรโต --plugin=protoc-gen-PLUGIN=<executable>.
plugin_format_flag

สตริง ค่าเริ่มต้นคือ ""

หากระบุไว้ ระบบจะส่งค่านี้ไปยังคอมไพเลอร์โปรโตเพื่อใช้ปลั๊กอิน ค่าต้องมี %s เพียงตัวเดียวซึ่งระบบจะแทนที่ด้วยไฟล์ปฏิบัติการของปลั๊กอิน --plugin=protoc-gen-PLUGIN=<executable>.
progress_message

สตริง ค่าเริ่มต้นคือ "Generating proto_library %{label}"

ระบบจะตั้งค่านี้เป็นข้อความความคืบหน้าในการดําเนินการ protoc
protoc_minimal_do_not_use

ป้ายกำกับ ค่าเริ่มต้นคือ None

runtime

ป้ายกํากับ ค่าเริ่มต้นคือ None

ไลบรารีเฉพาะภาษาที่คอมไพล์โค้ดที่สร้างขึ้น ลักษณะการทำงานที่แน่นอนจะขึ้นอยู่กับ LANG_proto_library เช่น Java ควรคอมไพล์กับรันไทม์
toolchain_type

ป้ายกํากับ ค่าเริ่มต้นคือ None

proto_toolchain

ดูแหล่งที่มาของกฎ
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)

อาร์กิวเมนต์

Attributes
name

ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสําหรับเป้าหมายนี้

command_line

สตริง ค่าเริ่มต้นคือ "--descriptor_set_out=%s"

mnemonic

สตริง ค่าเริ่มต้นคือ "GenProtoDescriptorSet"

output_files

สตริง ค่าเริ่มต้นคือ "single"

progress_message

สตริง ค่าเริ่มต้นคือ "Generating Descriptor Set proto_library %{label}"

proto_compiler

ป้ายกํากับ ค่าเริ่มต้นคือ None