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

กฎ

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-Composer กฎ LANG_proto_library บางข้ออนุญาตให้ระบุ Toolchain ที่จะใช้โดยใช้แฟล็กบรรทัดคำสั่ง โปรดอ่านเอกสาร

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

ไม่มีคอมไพเลอร์ โดยคอมไพเลอร์ Proto จะนำมาจากกฎ proto_library ที่เราแนบไปด้วย ซึ่งจะถูกส่งเป็นแฟล็กบรรทัดคำสั่งไปยัง Blaze ฟีเจอร์หลายอย่างต้องเรียกใช้คอมไพเลอร์ Proto กับกฎ 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

Name; required

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

blacklisted_protos

List of labels; optional

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

String; required

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

String; optional; default is "GenProto"

ค่านี้จะตั้งเป็นวิธีช่วยจำเกี่ยวกับการทำงานของ Protoc
plugin

Label; optional

หากระบุ จะพร้อมใช้งานสำหรับการดำเนินการที่เรียกใช้คอมไพเลอร์ Pro และจะส่งไปยังคอมไพเลอร์ Proto: --plugin=protoc-gen-PLUGIN=.
plugin_format_flag

String; optional

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

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

ค่านี้จะตั้งเป็นข้อความความคืบหน้าในการดำเนินการของโปรโตคอล
proto_compiler

Label; optional

ไฟล์ปฏิบัติการของคอมไพเลอร์ Proto หากระบุ ระบบจะใช้เป้าหมายนี้เป็นคอมไพเลอร์ Proto เพื่อสร้างโค้ด
runtime

Label; optional

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

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 ซึ่งเป็นชุดคำอธิบายสำหรับข้อความที่กฎ src ไฟล์ดังกล่าวเป็น FileDescriptorSet แบบต่อเนื่องตามที่อธิบายไว้ใน https://developers.google.com/protocol-buffers/docs/techniques#self-description

ซึ่งมีเฉพาะข้อมูลเกี่ยวกับไฟล์ .proto ที่กล่าวถึงโดยตรงในกฎ proto_library ส่วนการรวบรวมชุดข้อบ่งชี้ทางอ้อมมีให้บริการผ่านผู้ให้บริการ [ProtoInfo].transitive_descriptor_sets Starlark ดูเอกสารประกอบเป็นภาษาProtoInfo.java

การจัดระเบียบโค้ดที่แนะนำ:

  • กฎ proto_library 1 รายการต่อไฟล์ .proto ไฟล์
  • ไฟล์ชื่อ foo.proto จะอยู่ในกฎชื่อ foo_proto ซึ่งอยู่ในแพ็กเกจเดียวกัน
  • [language]_proto_library ที่รวม proto_library ชื่อ foo_proto ควรมีชื่อว่า foo_[language]_proto และอยู่ในแพ็กเกจเดียวกัน

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

Attributes
name

Name; required

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

deps

List of labels; optional

รายการกฎ proto_library อื่นๆ ที่เป้าหมายอ้างอิงอยู่ proto_library อาจขึ้นอยู่กับเป้าหมาย proto_library อื่นๆ เท่านั้น ซึ่งอาจไม่ได้ขึ้นอยู่กับไลบรารีภาษาใดภาษาหนึ่ง
srcs

List of labels; optional

รายการไฟล์ .proto และ .protodevel ที่ประมวลผลเพื่อสร้างเป้าหมาย ซึ่งโดยปกติแล้วจะเป็นรายการที่ไม่ว่างเปล่า Use Case หนึ่งที่เว้นว่าง srcs ได้คือ alias-library นี่คือกฎ proto_library ที่มี proto_library อื่นอย่างน้อย 1 รายการใน deps รูปแบบนี้สามารถใช้เพื่อส่งออก เช่น ส่งออก API สาธารณะภายใต้ชื่อถาวร
exports

List of labels; optional

รายการเป้าหมาย proto_library ที่อ้างอิงได้ผ่าน "import Public" ในต้นทาง Proto
import_prefix

String; optional

คำนำหน้าที่จะเพิ่มไปยังเส้นทางของไฟล์ .proto ในกฎนี้

เมื่อตั้งค่าแล้ว ไฟล์ต้นฉบับ .proto ในแอตทริบิวต์ srcs ของกฎนี้จะเข้าถึงได้คือค่าของแอตทริบิวต์นี้ที่เพิ่มข้างหน้าเส้นทางที่สัมพันธ์กับที่เก็บ

นำคำนำหน้าในแอตทริบิวต์ strip_import_prefix ออกก่อนเพิ่มคำนำหน้านี้

strip_import_prefix

String; optional

คำนำหน้าที่ตัดออกจากเส้นทางของไฟล์ .proto ในกฎนี้

เมื่อตั้งค่าแล้ว ไฟล์ต้นฉบับ .proto ในแอตทริบิวต์ srcs ของกฎนี้จะเข้าถึงได้ในเส้นทางของไฟล์ด้วยการตัดคำนำหน้านี้

หากเป็นเส้นทางแบบสัมพัทธ์ (ไม่ได้ขึ้นต้นด้วยเครื่องหมายทับ) ระบบจะถือว่าเป็นเส้นทางที่เกี่ยวข้องกับแพ็กเกจ หากเป็นเส้นทางสัมบูรณ์ ก็จะเข้าใจว่าเป็นเส้นทางที่เกี่ยวข้องกับที่เก็บ

ระบบจะเพิ่มคำนำหน้าในแอตทริบิวต์ import_prefix หลังจากนำคำนำหน้านี้ออก