native.cc_library
. ध्यान दें कि नेटिव मॉड्यूल सिर्फ़ लोड होने के चरण में उपलब्ध होता है. उदाहरण के लिए, मैक्रो के लिए, नियम लागू करने के दौरान नहीं. एट्रिब्यूट, None
की वैल्यू को अनदेखा करेंगे. साथ ही, उन्हें ऐसा मानेंगे जैसे एट्रिब्यूट को सेट नहीं किया गया हो.ये फ़ंक्शन भी उपलब्ध हैं:
सदस्य
existing_rule
unknown native.existing_rule(name)
None
बताता है.यहां, लिखने के तरीके जैसे ऑब्जेक्ट का मतलब है, बहुत ज़्यादा बदलाव न किए जा सकने वाले ऑब्जेक्ट x
का मतलब, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
, और x.values()
के लिए.
अगर --noincompatible_existing_rules_immutable_view
फ़्लैग सेट किया गया है, तो यह दिखाने के बजाय, उसी कॉन्टेंट का नया म्यूटेबल लिखता है.
नतीजे में हर एट्रिब्यूट के लिए एक एंट्री शामिल होती है. इसमें निजी एट्रिब्यूट (जिनके नाम अक्षर से शुरू नहीं होते) और कुछ ऐसे लेगसी एट्रिब्यूट टाइप को छोड़कर शामिल हैं जिन्हें दिखाया नहीं जा सकता. साथ ही, इस डिक्शनरी में नियम के इंस्टेंस के name
और kind
(उदाहरण के लिए, 'cc_binary'
) के लिए एंट्री शामिल हैं.
नतीजे की वैल्यू, एट्रिब्यूट की वैल्यू इस तरह दिखाती हैं:
- str, int, और bool टाइप एट्रिब्यूट की विशेषताएं ऐसे दिखाई गई हैं.
- उसी पैकेज में मौजूद टारगेट के लिए लेबल को
':foo'
फ़ॉर्म वाली स्ट्रिंग में या किसी दूसरे पैकेज के टारगेट के लिए'//pkg:name'
फ़ॉर्मैट में बदला जाता है. - सूचियों को टूपल के तौर पर दिखाया जाता है और लिखवाने की संख्या को नए और बदले जा सकने वाले डिक्शनरी में बदल दिया जाता है. इन्हें एक ही तरीके से बार-बार बदला जाता है.
select
वैल्यू, ऊपर बताए गए कॉन्टेंट के हिसाब से बदली जाती हैं.- ऐसे एट्रिब्यूट जिनके लिए, नियम बनाने के दौरान कोई वैल्यू नहीं दी गई थी और जिनकी डिफ़ॉल्ट वैल्यू कैलकुलेट की गई है उन्हें नतीजे से बाहर रखा गया है. (विश्लेषण के चरण से पहले, कैलकुलेट की गई डिफ़ॉल्ट वैल्यू को कैलकुलेट नहीं किया जा सकता.).
अगर हो सके, तो इस फ़ंक्शन का इस्तेमाल करने से बचें. इससे फ़ाइलें मज़बूत बनती हैं और फ़ाइलों के क्रम पर निर्भर रहता है. साथ ही, ध्यान रखें कि यह नियम के दो अन्य कन्वर्ज़न एट्रिब्यूट की वैल्यू से काफ़ी अलग है. वैल्यू के अंदरूनी फ़ॉर्मैट से Starlark भी अलग है: एक का इस्तेमाल डिफ़ॉल्ट वैल्यू के लिए और दूसरे का इस्तेमाल ctx.attr.foo
करता है.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
name
|
ज़रूरी है टारगेट का नाम. |
existing_rules
unknown native.existing_rules()
existing_rule(name)
के बाद मिलता है.यहां, लिखने के तरीके जैसे ऑब्जेक्ट का मतलब है, बहुत ज़्यादा बदलाव न किए जा सकने वाले ऑब्जेक्ट x
का मतलब, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
, और x.values()
के लिए.
अगर --noincompatible_existing_rules_immutable_view
फ़्लैग सेट किया गया है, तो यह दिखाने के बजाय, उसी कॉन्टेंट का नया म्यूटेबल लिखता है.
ध्यान दें: अगर हो सके, तो इस फ़ंक्शन का इस्तेमाल करने से बचें. इससे फ़ाइलें मज़बूत बनती हैं और फ़ाइलों के क्रम पर निर्भर रहता है. इसके अलावा, अगर --noincompatible_existing_rules_immutable_view
फ़्लैग सेट है, तो यह फ़ंक्शन बहुत महंगा पड़ सकता है. खास तौर पर तब, जब इसे लूप में इस्तेमाल किया जाता हो.
exports_files
None native.exports_files(srcs, visibility=None, licenses=None)
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
srcs
|
sequence of strings ;
ज़रूरी हैएक्सपोर्ट की जाने वाली फ़ाइलों की सूची. |
visibility
|
sequence; or None ;
डिफ़ॉल्ट = कोई नहींआपके पास 'किसको दिखे' सेटिंग का एलान करने का विकल्प है. फ़ाइलें तय किए गए टारगेट के लिए दिखेंगी. अगर कोई 'किसको दिखे' सेटिंग तय नहीं की गई है, तो फ़ाइलें हर पैकेज को दिखेंगी. |
licenses
|
sequence of strings; or None ;
डिफ़ॉल्ट = कोई नहींचुने जाने वाले लाइसेंस. |
ग्लोब
sequence native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)
include
में कम से कम एक पैटर्न से मेल खाता है.exclude
में किसी भी पैटर्न से मेल नहीं खाता (डिफ़ॉल्ट[]
).
exclude_directories
आर्ग्युमेंट को चालू किया गया (1
पर सेट किया गया) है, तो डायरेक्ट्री टाइप वाली फ़ाइलें, नतीजों से हटा दी जाएंगी (डिफ़ॉल्ट 1
).
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
include
|
sequence of strings ;
डिफ़ॉल्ट = []शामिल किए जाने वाले ग्लोब पैटर्न की सूची. |
exclude
|
sequence of strings ;
डिफ़ॉल्ट = []शामिल नहीं किए जाने वाले ग्लोब पैटर्न की सूची. |
exclude_directories
|
डिफ़ॉल्ट = 1 डायरेक्ट्री को हटाना है या नहीं, इसके लिए फ़्लैग. |
allow_empty
|
डिफ़ॉल्ट = अनबाउंड क्या हम ग्लोब पैटर्न को किसी भी चीज़ से मैच करने की अनुमति न दें. अगर `allow_खाली` 'गलत' है, तो हर एक इनक्लूड पैटर्न को कुछ हद तक मैच करना चाहिए. साथ ही, फ़ाइनल नतीजा भी खाली नहीं होना चाहिए (`बाहर रखने` वाले पैटर्न के मैच को बाहर रखने के बाद). |
package_group
None native.package_group(name, packages=[], includes=[])
visibility
एट्रिब्यूट में दिया जा सकता है.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
name
|
ज़रूरी है इस नियम के लिए यूनीक नाम. |
packages
|
sequence of strings ;
डिफ़ॉल्ट = []इस ग्रुप में पैकेज की पूरी सूची. |
includes
|
sequence of strings ;
डिफ़ॉल्ट = []इस ग्रुप में शामिल अन्य पैकेज ग्रुप. |
package_name
string native.package_name()
some/package/BUILD
में इसकी वैल्यू some/package
होगी. अगर BUILD फ़ाइल, .bzl फ़ाइल में दिए गए फ़ंक्शन को कॉल करती है, तो package_name()
, कॉलर BUILD फ़ाइल पैकेज से मैच करेगा. यह फ़ंक्शन, काम न करने वाले वैरिएबल PACKAGE_NAME
के बराबर है.
repository_name
string native.repository_name()
local_repository(name='local', path=...)
की मदद ली गई है उन्हें @local
पर सेट किया जाएगा. डेटा स्टोर करने की मुख्य जगह के पैकेज में, यह @
पर सेट होगा. यह फ़ंक्शन, काम न करने वाले वैरिएबल REPOSITORY_NAME
के बराबर है.
सबपैकेज
sequence native.subpackages(include, exclude=[], allow_empty=False)
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
include
|
sequence of strings ;
ज़रूरी हैसबपैकेज स्कैन में शामिल किए जाने वाले ग्लोब पैटर्न की सूची. |
exclude
|
sequence of strings ;
डिफ़ॉल्ट = []सबपैकेज स्कैन में शामिल नहीं किए जाने वाले ग्लोब पैटर्न की सूची. |
allow_empty
|
डिफ़ॉल्ट = गलत कॉल के खाली सूची मिलने पर, हम टास्क पूरा नहीं कर पाते हैं या नहीं. डिफ़ॉल्ट रूप से खाली सूची, BUILD फ़ाइल में संभावित गड़बड़ी की जानकारी देती है, जहां सब-पैकेज() का इस्तेमाल करना ज़रूरत से ज़्यादा नहीं होता है. सही पर सेट करने से यह फ़ंक्शन उस मामले में सफल होता है. |