नियम
- cc_proto_library
- java_lite_proto_library
- java_proto_library
- proto_library
- py_proto_library
- proto_lang_toolchain
- proto_toolchain
cc_proto_library
नियम का सोर्स देखें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
फ़ाइलों से C++ कोड जनरेट करता है.
deps
, proto_library
के नियमों के मुताबिक होना चाहिए.
उदाहरण:
cc_library(
name = "lib",
deps = [":foo_cc_proto"],
)
cc_proto_library(
name = "foo_cc_proto",
deps = [":foo_proto"],
)
proto_library(
name = "foo_proto",
)
तर्क
विशेषताएं | |
---|---|
name |
नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. |
deps
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू proto_library
नियमों की सूची, जिनके लिए C++ कोड जनरेट करना है.
|
java_lite_proto_library
नियम का सोर्स देखें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
फ़ाइलों से Java कोड जनरेट करता है.
deps
, proto_library
के नियमों के मुताबिक होना चाहिए.
उदाहरण:
java_library(
name = "lib",
runtime_deps = [":foo"],
)
java_lite_proto_library(
name = "foo",
deps = [":bar"],
)
proto_library(
name = "bar",
)
तर्क
विशेषताएं | |
---|---|
name |
नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. |
deps
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू proto_library
नियमों की सूची, जिनके लिए Java कोड जनरेट करना है.
|
java_proto_library
नियम का सोर्स देखें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
फ़ाइलों से Java कोड जनरेट करता है.
deps
, proto_library
के नियमों के मुताबिक होना चाहिए.
उदाहरण:
java_library(
name = "lib",
runtime_deps = [":foo_java_proto"],
)
java_proto_library(
name = "foo_java_proto",
deps = [":foo_proto"],
)
proto_library(
name = "foo_proto",
)
तर्क
विशेषताएं | |
---|---|
name |
नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. |
deps
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू proto_library
नियमों की सूची, जिनके लिए Java कोड जनरेट करना है.
|
proto_library
नियम का सोर्स देखें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)
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 प्रोवाइडर के ज़रिए उपलब्ध होता है.
proto_info.bzl
में दस्तावेज़ देखें.
कोड को व्यवस्थित करने का सुझाव:
- हर
.proto
फ़ाइल के लिए एकproto_library
नियम. foo.proto
नाम की फ़ाइल,foo_proto
नाम के नियम में होगी. यह नियम, उसी पैकेज में मौजूद होगा.foo_proto
नाम केproto_library
को रैप करने वाले[language]_proto_library
कोfoo_[language]_proto
कहा जाना चाहिए. साथ ही, यह उसी पैकेज में मौजूद होना चाहिए.
तर्क
विशेषताएं | |
---|---|
name |
नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. |
deps
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू proto_library के उन अन्य नियमों की सूची जिन पर टारगेट निर्भर करता है.
कोई proto_library सिर्फ़ अन्य proto_library टारगेट पर निर्भर हो सकता है. यह भाषा के हिसाब से बनाई गई लाइब्रेरी पर निर्भर नहीं हो सकता.
|
srcs
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू .proto और .protodevel फ़ाइलों की सूची, जिन्हें टारगेट बनाने के लिए प्रोसेस किया जाता है. आम तौर पर, यह सूची खाली नहीं होती है. srcs खाली होने का एक उदाहरण alias-library है. यह एक proto_library नियम है, जिसमें deps में एक या उससे ज़्यादा अन्य proto_library हैं.
इस पैटर्न का इस्तेमाल, उदाहरण के लिए, किसी सार्वजनिक एपीआई को एक स्थायी नाम से एक्सपोर्ट करने के लिए किया जा सकता है.
|
allow_exports
|
लेबल; डिफ़ॉल्ट वैल्यू |
exports
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू |
import_prefix
|
स्ट्रिंग; डिफ़ॉल्ट वैल्यू इस नियम के इस प्रीफ़िक्स को जोड़ने से पहले, |
strip_import_prefix
|
स्ट्रिंग; डिफ़ॉल्ट वैल्यू इस विकल्प को सेट करने पर, इस नियम के अगर यह स्लेश से शुरू नहीं होता है, तो इसे पैकेज के हिसाब से रिलेटिव पाथ माना जाता है. अगर यह ऐब्सलूट पाथ है, तो इसे रिपॉज़िटरी के हिसाब से पाथ माना जाता है.
|
py_proto_library
नियम का सोर्स देखें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)
तर्क
विशेषताएं | |
---|---|
name |
नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. |
deps
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू |
proto_lang_toolchain
नियम का सोर्स देखें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 का इस्तेमाल किया जा रहा है, तो कृपया https://github.com/bazelbuild/rules_proto से नियम लोड करें.
इससे पता चलता है कि LANG_proto_library नियम (जैसे, java_proto_library
) को proto-compiler को कॉल करना चाहिए.
LANG_proto_library के कुछ नियमों के तहत, कमांड-लाइन फ़्लैग का इस्तेमाल करके यह तय किया जा सकता है कि किस टूलचेन का इस्तेमाल करना है;
इनके दस्तावेज़ देखें.
आम तौर पर, आपको इस तरह के नियम नहीं लिखने चाहिए. हालांकि, अगर आपको अपने Java कंपाइलर को ट्यून करना है, तो ऐसा किया जा सकता है.
कोई कंपाइलर नहीं है. प्रोटो-कंपाइलर को उस proto_library नियम से लिया जाता है जिसे हम अटैच करते हैं. इसे Blaze को कमांड-लाइन फ़्लैग के तौर पर पास किया जाता है.
कई सुविधाओं के लिए, proto_library नियम पर proto-compiler को चालू करना ज़रूरी होता है.
यह ज़रूरी है कि 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 |
नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. |
allowlist_different_package
|
लेबल; डिफ़ॉल्ट वैल्यू |
blacklisted_protos
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू blacklisted_protos एट्रिब्यूट की srcs एट्रिब्यूट वाली फ़ाइलों के लिए कोई कोड जनरेट नहीं किया जाएगा.
इसका इस्तेमाल उन .proto फ़ाइलों के लिए किया जाता है जो पहले से ही proto रनटाइम में लिंक की गई हैं. जैसे, any.proto .
|
command_line
|
स्ट्रिंग; ज़रूरी है इस वैल्यू को कोड जनरेट करने के लिए, प्रोटो-कंपाइलर को पास किया जाएगा. सिर्फ़ उन हिस्सों को शामिल करें जो इस कोड-जनरेटर/प्लगिन के लिए खास हैं. उदाहरण के लिए, -I पैरामीटर शामिल न करें
|
mnemonic
|
स्ट्रिंग; डिफ़ॉल्ट वैल्यू |
output_files
|
स्ट्रिंग; डिफ़ॉल्ट वैल्यू command_line में command_line को कैसे फ़ॉर्मैट किया जाए. इसके लिए, एक फ़ाइल का पाथ या एक से ज़्यादा फ़ाइलों के मामले में आउटपुट डायरेक्ट्री का इस्तेमाल किया जाता है.$(OUT)
संभावित वैल्यू ये हैं: "single", "multiple".
|
plugin
|
लेबल; डिफ़ॉल्ट वैल्यू --plugin=protoc-gen-PLUGIN=<executable>.
|
plugin_format_flag
|
स्ट्रिंग; डिफ़ॉल्ट वैल्यू --plugin=protoc-gen-PLUGIN=<executable>.
|
progress_message
|
स्ट्रिंग; डिफ़ॉल्ट वैल्यू |
protoc_minimal_do_not_use
|
लेबल; डिफ़ॉल्ट वैल्यू |
runtime
|
लेबल; डिफ़ॉल्ट वैल्यू |
toolchain_type
|
लेबल; डिफ़ॉल्ट वैल्यू |
proto_toolchain
नियम का सोर्स देखें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)
तर्क
विशेषताएं | |
---|---|
name |
नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. |
command_line
|
स्ट्रिंग; डिफ़ॉल्ट वैल्यू |
mnemonic
|
स्ट्रिंग; डिफ़ॉल्ट वैल्यू |
output_files
|
स्ट्रिंग; डिफ़ॉल्ट वैल्यू |
progress_message
|
स्ट्रिंग; डिफ़ॉल्ट वैल्यू |
proto_compiler
|
लेबल; डिफ़ॉल्ट वैल्यू |