ऑब्जेक्टिव-सी के नियम

समस्या की शिकायत करें सोर्स देखें

नियम

j2objc_library

नियम का सोर्स देखें
j2objc_library(name, deps, compatible_with, deprecation, distribs, entry_classes, features, jre_deps, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

यह नियम, Java सोर्स फ़ाइलों का Objective-C में अनुवाद करने के लिए, J2ObjC का इस्तेमाल करता है. इसके बाद, इसका इस्तेमाल objc_library और objc_binary नियमों की डिपेंडेंसी के तौर पर किया जा सकता है. J2ObjC के बारे में ज़्यादा जानकारी J2ObjC साइट पर मिल सकती है

कमांड लाइन में बिल्ड फ़्लैग --j2objc_translation_flags का इस्तेमाल करके, ज़रूरत के मुताबिक J2ObjC ट्रांसपिलेशन फ़्लैग तय किए जा सकते हैं.

कृपया ध्यान दें कि j2objc_library टारगेट में शामिल अनुवाद की गई फ़ाइलों को डिफ़ॉल्ट कंपाइलेशन कॉन्फ़िगरेशन का इस्तेमाल करके कंपाइल किया जाएगा. यह कॉन्फ़िगरेशन उसी तरह होगा जैसा कि objc_library नियम के सोर्स के लिए किया जाता है और एट्रिब्यूट में कंपाइलेशन के कोई विकल्प नहीं दिए गए हैं.

साथ ही, जनरेट किए गए कोड की डुप्लीकेट कॉपी को टारगेट लेवल पर हटाया जाता है, न कि सोर्स लेवल पर. अगर आपके पास दो अलग-अलग Java टारगेट हैं जिनमें एक जैसी Java सोर्स फ़ाइलें हैं, तो आपको लिंक करते समय डुप्लीकेट सिंबल की गड़बड़ी दिख सकती है. इस समस्या को हल करने का सही तरीका यह है कि शेयर की गई Java सोर्स फ़ाइलों को एक अलग सामान्य टारगेट में ले जाया जाए, जिस पर भरोसा किया जा सके.

तर्क

विशेषताएं
name

नाम; ज़रूरी है

इस टारगेट के लिए यूनीक नाम.

deps

लेबल की सूची; डिफ़ॉल्ट [] है

j2objc_library, java_library, java_import, और java_proto_library टारगेट की सूची, जिनमें Objective-C में ट्रांसपिल की जाने वाली Java फ़ाइलें हैं.

java_library और java_import के उन सभी टारगेट का अनुवाद किया जाएगा जिन्हें exports, deps, और runtime_deps के ज़रिए ट्रांज़िट के ज़रिए हासिल किया जा सकता है. इनमें, Java एनोटेशन प्रोसेसिंग से जनरेट की गई फ़ाइलें भी शामिल हैं. बिना srcjar दिए code>java_Import टारगेट के लिए सहायता उपलब्ध नहीं है.

J2ObjC अनुवाद, ट्रांज़िटिव क्लोज़र में शामिल सोर्स Java सोर्स फ़ाइलों के टाइप के आधार पर अलग-अलग तरह से काम करता है. java_library के srcs में शामिल हर .java सोर्स फ़ाइलों के लिए, एक .h और .m सोर्स फ़ाइल जनरेट की जाएगी. java_library के srcs या java_import के srcjar में शामिल हर सोर्स जार के लिए, उस जार के सभी कोड के साथ उससे जुड़ी .h और .m सोर्स फ़ाइल जनरेट की जाएगी.

उपयोगकर्ता अपने कोड में J2ObjC से जनरेट की गई हेडर फ़ाइलें इंपोर्ट कर सकते हैं. इन फ़ाइलों के इंपोर्ट पाथ, ओरिजनल Java आर्टफ़ैक्ट के रूट-रिलेटिव पाथ हैं. उदाहरण के लिए, //some/package/foo.java में some/package/foo.h का इंपोर्ट पाथ है और //some/package/bar.srcjar में some/package/bar.h है

अगर proto_library नियम इस नियम के अस्थायी तौर पर बंद होने की प्रक्रिया में हैं, तो J2ObjC प्रोटो बाइनरी लेवल पर जनरेट, कंपाइल, और लिंक-इन किए जाएंगे. प्रोटो //some/proto/foo.proto के लिए, उपयोगकर्ता इंपोर्ट पाथ some/proto/foo.j2objc.pb.h का इस्तेमाल करके जनरेट किए गए कोड का रेफ़रंस दे सकते हैं.

entry_classes

स्ट्रिंग की सूची; डिफ़ॉल्ट [] है

Java की क्लास की सूची, जिसके ऑब्जेसी वर्शन का अनुवाद किया गया है, सीधे उपयोगकर्ता के ऑब्जेसी कोड से उसका रेफ़रंस दिया जाएगा. अगर --j2objc_dead_code_removal फ़्लैग चालू है, तो यह एट्रिब्यूट ज़रूरी है. Java की क्लास को उनके कैननिकल नाम में बताना चाहिए, जैसा कि Java लैंग्वेज स्पेसिफ़िकेशन में बताया गया है. जब --j2objc_dead_code_removal फ़्लैग दिया गया होगा, तो एंट्री क्लास की सूची को एक जगह से दूसरी जगह ले जाया जाएगा. इसका इस्तेमाल, खराब कोड का विश्लेषण करने के लिए एंट्री पॉइंट के तौर पर किया जाएगा. इसके बाद, इस्तेमाल नहीं की गई क्लास को ऑब्जेसी ऐप्लिकेशन बंडल के फ़ाइनल वर्शन से हटा दिया जाएगा.
jre_deps

लेबल की सूची; डिफ़ॉल्ट [] है

उन अतिरिक्त JRE एम्युलेशन लाइब्रेरी की सूची जिनका अनुवाद सभी Java कोड के लिए इस j2objc_library नियम के मुताबिक किया गया है. डिफ़ॉल्ट रूप से, सिर्फ़ मुख्य JRE फ़ंक्शन को लिंक किया जाता है.

objc_import

नियम का सोर्स देखें
objc_import(name, deps, hdrs, alwayslink, archives, compatible_with, deprecation, distribs, features, includes, licenses, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, visibility, weak_sdk_frameworks)

यह नियम, पहले से कंपाइल की गई स्टैटिक लाइब्रेरी को .a फ़ाइल के तौर पर इकट्ठा करता है. इससे हेडर और रिसॉर्स भी एक्सपोर्ट किए जा सकते हैं. इसके लिए, objc_library पर काम करने वाले मिलते-जुलते एट्रिब्यूट का इस्तेमाल किया जाता है.

तर्क

विशेषताएं
name

नाम; ज़रूरी है

इस टारगेट के लिए यूनीक नाम.

deps

लेबल की सूची; डिफ़ॉल्ट [] है

उन टारगेट की सूची जिन पर यह टारगेट निर्भर करता है.
hdrs

लेबल की सूची; डिफ़ॉल्ट [] है

इस लाइब्रेरी में पब्लिश की गई C, C++, Objective-C, और Objective-C++ हेडर फ़ाइलों की सूची, जिन्हें डिपेंडेंट नियमों में मौजूद सोर्स के हिसाब से शामिल किया जाएगा.

ये हेडर, लाइब्रेरी के सार्वजनिक इंटरफ़ेस के बारे में बताते हैं. इन्हें इस नियम में शामिल सोर्स से या अलग-अलग नियमों के हिसाब से शामिल करने के लिए उपलब्ध कराया जाएगा. ऐसे हेडर जिन्हें इस लाइब्रेरी के क्लाइंट के ज़रिए शामिल नहीं किया जाना चाहिए, उन्हें srcs एट्रिब्यूट में शामिल करना चाहिए.

मॉड्यूल चालू होने पर, इन्हें सोर्स से अलग इकट्ठा किया जाएगा.

बूलियन; डिफ़ॉल्ट False है

अगर 1 है, तो इस लाइब्रेरी पर सीधे या किसी दूसरे तरीके से निर्भर कोई भी बंडल या बाइनरी, srcs और non_arc_srcs में लिस्ट की गई फ़ाइलों के लिए सभी ऑब्जेक्ट फ़ाइलों में लिंक कर देगा. भले ही, कुछ में बाइनरी से रेफ़र किया गया कोई सिंबल मौजूद न हो. यह तब काम आता है, जब साफ़ तौर पर आपके कोड को बाइनरी में कोड के ज़रिए कॉल न किया गया हो. उदाहरण के लिए, जब आपका कोड किसी सेवा से मिलने वाले कॉलबैक के लिए रजिस्टर होता है.
archives

लेबल की सूची; ज़रूरी है

Objective-C टारगेट के लिए दी गई .a फ़ाइलों की सूची, जो इस टारगेट पर निर्भर है.
includes

स्ट्रिंग की सूची; डिफ़ॉल्ट [] है

इस टारगेट और टारगेट के हिसाब से सभी में जोड़ने के लिए, #include/#import खोज पाथ की सूची. यह तीसरे पक्ष और ओपन-सोर्स लाइब्रेरी के लिए काम करता है, जो अपने #import/#include स्टेटमेंट में पूरे फ़ाइल फ़ोल्डर के पाथ की जानकारी नहीं देती.

पाथ की व्याख्या पैकेज डायरेक्ट्री के हिसाब से की जाती है और असली क्लाइंट रूट के साथ, genfile और bin रूट (जैसे, blaze-genfiles/pkg/includedir और blaze-out/pkg/includedir) भी शामिल किए जाते हैं.

COPTS के उलट, इन फ़्लैग को इस नियम और इस पर निर्भर हर नियम के लिए जोड़ा जाता है. (ध्यान दें: वे नियम नहीं हैं जिन पर यह निर्भर करता है!) बहुत सावधान रहें, क्योंकि इसके दूर तक पहुंचने वाले प्रभाव हो सकते हैं. जब भी आपको पता न हो कि COPTS में "-iquote" फ़्लैग जोड़ें.

sdk_dylibs

स्ट्रिंग की सूची; डिफ़ॉल्ट [] है

SDK टूल .dylib लाइब्रेरी के नाम जिनसे लिंक करना है. उदाहरण के लिए, "libz" या "libarchive". अगर बाइनरी के डिपेंडेंसी ट्री में C++ या Objective-C++ सोर्स हैं, तो "libc++" अपने-आप शामिल हो जाता है. किसी बाइनरी को लिंक करते समय, उस बाइनरी के ट्रांज़िटिव डिपेंडेंसी ग्राफ़ में दी गई सभी लाइब्रेरी इस्तेमाल की जाती हैं.
sdk_frameworks

स्ट्रिंग की सूची; डिफ़ॉल्ट [] है

SDK टूल के फ़्रेमवर्क के नाम जिनके साथ लिंक करना है. जैसे, "AddressBook", "QuartzCore"). iOS, tvOS, visionOS, और watchOS प्लैटफ़ॉर्म के लिए, ऐप्लिकेशन बनाते समय "UIKit" और "Foundation" हमेशा शामिल किए जाते हैं. macOS के लिए, सिर्फ़ "फ़ाउंडेशन" हमेशा शामिल होता है.

टॉप लेवल की Apple बाइनरी को लिंक करने पर, उस बाइनरी के ट्रांज़िटिव डिपेंडेंसी ग्राफ़ में लिस्ट किए गए सभी SDK फ़्रेमवर्क लिंक होते हैं.

sdk_includes

स्ट्रिंग की सूची; डिफ़ॉल्ट [] है

इस टारगेट और टारगेट के हिसाब से सभी #include/#import खोज पाथ की सूची, जिसमें हर पाथ $(SDKROOT)/usr/include से जुड़ा है.
textual_hdrs

लेबल की सूची; डिफ़ॉल्ट [] है

C, C++, Objective-C, और Objective-C++ फ़ाइलों की सूची, जिन्हें इस नियम में मौजूद सोर्स फ़ाइलों के हेडर के तौर पर या इस लाइब्रेरी का इस्तेमाल करने वाले उपयोगकर्ताओं ने शामिल किया है. hdrs के उलट, इन्हें अलग-अलग सोर्स से इकट्ठा नहीं किया जाएगा.
weak_sdk_frameworks

स्ट्रिंग की सूची; डिफ़ॉल्ट [] है

ऐसे SDK टूल फ़्रेमवर्क के नाम जिनके साथ कमज़ोर लिंक किए जाने चाहिए. उदाहरण के लिए, "MediaAccessibility". आम तौर पर लिंक किए गए SDK टूल की तुलना में, कमज़ोर तरीके से लिंक किए गए फ़्रेमवर्क के सिंबल रनटाइम के दौरान उनके न होने पर गड़बड़ी नहीं होती.

objc_library

नियम का सोर्स देखें
objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, copts, defines, deprecation, distribs, enable_modules, exec_compatible_with, exec_properties, features, implementation_deps, includes, licenses, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)

यह नियम, दिए गए Objective-C सोर्स फ़ाइलों से एक स्टैटिक लाइब्रेरी बनाता है.

तर्क

विशेषताएं
name

नाम; ज़रूरी है

इस टारगेट के लिए यूनीक नाम.

deps

लेबल की सूची; डिफ़ॉल्ट [] है

फ़ाइनल बंडल बनाने के लिए, एक साथ जोड़े गए टारगेट की सूची.
srcs

लेबल की सूची; डिफ़ॉल्ट [] है

C, C++, Objective-C, और Objective-C++ सोर्स और हेडर फ़ाइलें और/या (`.s`, `.S` या `.asm`) असेंबली सोर्स फ़ाइलों की सूची, जिन्हें लाइब्रेरी का टारगेट बनाने के लिए प्रोसेस किया जाता है. ये आपकी चेक-इन की गई फ़ाइलें और जनरेट की गई सभी फ़ाइलें होती हैं. सोर्स फ़ाइलों को Clang के साथ .o फ़ाइलों में कंपाइल किया जाता है. हेडर फ़ाइलों को इस टारगेट के srcs एट्रिब्यूट में किसी भी सोर्स या हेडर से शामिल/इंपोर्ट किया जा सकता है. हालांकि, एचडीआर में मौजूद हेडर या इस नियम पर निर्भर किसी टारगेट के ज़रिए, हेडर फ़ाइलों को शामिल/इंपोर्ट नहीं किया जा सकता. इसके अलावा, पहले से कंपाइल की गई .o फ़ाइलों को सोर्स के तौर पर दिखाया जा सकता है. सिंबल लिंकर की गड़बड़ियों से बचने के लिए, यह पक्का करें कि दी गई .o फ़ाइलों और बिल्ड का आर्किटेक्चर एक जैसा हो.
hdrs

लेबल की सूची; डिफ़ॉल्ट [] है

इस लाइब्रेरी में पब्लिश की गई C, C++, Objective-C, और Objective-C++ हेडर फ़ाइलों की सूची, जिन्हें डिपेंडेंट नियमों में मौजूद सोर्स के हिसाब से शामिल किया जाएगा.

ये हेडर, लाइब्रेरी के सार्वजनिक इंटरफ़ेस के बारे में बताते हैं. इन्हें इस नियम में शामिल सोर्स से या अलग-अलग नियमों के हिसाब से शामिल करने के लिए उपलब्ध कराया जाएगा. ऐसे हेडर जिन्हें इस लाइब्रेरी के क्लाइंट के ज़रिए शामिल नहीं किया जाना चाहिए, उन्हें srcs एट्रिब्यूट में शामिल करना चाहिए.

मॉड्यूल चालू होने पर, इन्हें सोर्स से अलग इकट्ठा किया जाएगा.

बूलियन; डिफ़ॉल्ट False है

अगर 1 है, तो इस लाइब्रेरी पर सीधे या किसी दूसरे तरीके से निर्भर कोई भी बंडल या बाइनरी, srcs और non_arc_srcs में लिस्ट की गई फ़ाइलों के लिए सभी ऑब्जेक्ट फ़ाइलों में लिंक कर देगा. भले ही, कुछ में बाइनरी से रेफ़र किया गया कोई सिंबल मौजूद न हो. यह तब काम आता है, जब साफ़ तौर पर आपके कोड को बाइनरी में कोड के ज़रिए कॉल न किया गया हो. उदाहरण के लिए, जब आपका कोड किसी सेवा से मिलने वाले कॉलबैक के लिए रजिस्टर होता है.
copts

स्ट्रिंग की सूची; डिफ़ॉल्ट [] है

कंपाइलर को पास करने के लिए अतिरिक्त फ़्लैग. यह "वैरिएबल बनाएं" विकल्प और बोर्न शेल टोकनाइज़ेशन पर निर्भर करता है. ये फ़्लैग सिर्फ़ इस टारगेट पर लागू होंगे. इन फ़्लैग पर ये नहीं लागू होंगे:

ध्यान दें कि जनरेट किए गए Xcode प्रोजेक्ट के लिए, कॉप्ट में "-I" फ़्लैग का इस्तेमाल करके बताए गए डायरेक्ट्री पाथ, पार्स किए जाते हैं. साथ ही, अगर वे रिलेटिव पाथ हैं, तो उन्हें "$(workSPACE_ROOT)/" से पहले जोड़ा जाता है. साथ ही, उन्हें संबंधित Xcode टारगेट के लिए हेडर सर्च पाथ में जोड़ा जाता है.

defines

स्ट्रिंग की सूची; डिफ़ॉल्ट [] है

कंपाइलर को भेजने के लिए अतिरिक्त -D फ़्लैग. उन्हें KEY=VALUE या सिर्फ़ KEY के तौर पर होना चाहिए. साथ ही, उन्हें न सिर्फ़ इस टारगेट के लिए कंपाइलर को (copts के तौर पर) पास किया जाना चाहिए, बल्कि इस टारगेट के सभी objc_ डिपेंडेंट को भी पास किया जाना चाहिए. यह "वैरिएबल बनाएं" विकल्प और बोर्न शेल टोकनाइज़ेशन पर निर्भर करता है.
enable_modules

बूलियन; डिफ़ॉल्ट False है

-fmodules के ज़रिए क्लैंग मॉड्यूल सपोर्ट को चालू करता है. इसे 1 पर सेट करने पर, सिस्टम हेडर और दूसरे टारगेट को @इंपोर्ट किया जा सकेगा: @Import UIKit; @Import path_to_package_target;
implementation_deps

लेबल की सूची; डिफ़ॉल्ट [] है

लाइब्रेरी टारगेट की जाने वाली दूसरी लाइब्रेरी की सूची, इस पर निर्भर करती है. deps से अलग, इन लाइब्रेरी के हेडर और शामिल पाथ (और इनके सभी ट्रांज़िटिव डिप) का इस्तेमाल सिर्फ़ इस लाइब्रेरी को कंपाइल करने के लिए किया जाता है, न कि इस लाइब्रेरी पर निर्भर लाइब्रेरी का. implementation_deps के साथ तय की गई लाइब्रेरी अब भी इस लाइब्रेरी पर निर्भर बाइनरी टारगेट में लिंक हैं.
includes

स्ट्रिंग की सूची; डिफ़ॉल्ट [] है

इस टारगेट और टारगेट के हिसाब से सभी में जोड़ने के लिए, #include/#import खोज पाथ की सूची. यह तीसरे पक्ष और ओपन-सोर्स लाइब्रेरी के लिए काम करता है, जो अपने #import/#include स्टेटमेंट में पूरे फ़ाइल फ़ोल्डर के पाथ की जानकारी नहीं देती.

पाथ की व्याख्या पैकेज डायरेक्ट्री के हिसाब से की जाती है और असली क्लाइंट रूट के साथ, genfile और bin रूट (जैसे, blaze-genfiles/pkg/includedir और blaze-out/pkg/includedir) भी शामिल किए जाते हैं.

COPTS के उलट, इन फ़्लैग को इस नियम और इस पर निर्भर हर नियम के लिए जोड़ा जाता है. (ध्यान दें: वे नियम नहीं हैं जिन पर यह निर्भर करता है!) बहुत सावधान रहें, क्योंकि इसके दूर तक पहुंचने वाले प्रभाव हो सकते हैं. जब भी आपको पता न हो कि COPTS में "-iquote" फ़्लैग जोड़ें.

linkopts

स्ट्रिंग की सूची; डिफ़ॉल्ट [] है

लिंकर को भेजने के लिए अतिरिक्त फ़्लैग.
module_map

लेबल; डिफ़ॉल्ट None है

इस टारगेट के लिए, कस्टम Clang मॉड्यूल मैप. कस्टम मॉड्यूल मैप का इस्तेमाल करने की सलाह नहीं दी जाती है. ज़्यादातर उपयोगकर्ताओं को Baज़ल से जनरेट किए गए मॉड्यूल मैप इस्तेमाल करने चाहिए. अगर बताया गया है, तो Baze इस टारगेट के लिए मॉड्यूल मैप जनरेट नहीं करेगा. हालांकि, दिए गए मॉड्यूल मैप को कंपाइलर को भेज देगा.
module_name

स्ट्रिंग; डिफ़ॉल्ट तौर पर "" है

इस टारगेट के लिए मॉड्यूल का नाम सेट करता है. डिफ़ॉल्ट रूप से, मॉड्यूल का नाम टारगेट पाथ होता है.इसमें सभी खास सिंबल की जगह _ का इस्तेमाल होता है. उदाहरण के लिए, //foo/baz:bar को foo_baz_bar के तौर पर इंपोर्ट किया जा सकता है.
non_arc_srcs

लेबल की सूची; डिफ़ॉल्ट [] है

Objective-C फ़ाइलों की सूची, जिन्हें लाइब्रेरी का टारगेट बनाने के लिए प्रोसेस किया जाता है. इन फ़ाइलों में ARC का इस्तेमाल नहीं किया जाता. इस एट्रिब्यूट में मौजूद फ़ाइलों को, srcs एट्रिब्यूट में मौजूद फ़ाइलों की तरह ही माना जाता है. हालांकि, उन्हें ARC चालू किए बिना कंपाइल किया जाता है.
pch

लेबल; डिफ़ॉल्ट None है

हेडर फ़ाइल, कंपाइल की जा रही हर सोर्स फ़ाइल के शुरू होने से पहले जोड़ी जाती है (आर्क और नॉन-आर्क दोनों). बिल्ड फ़ाइलों में Pch फ़ाइलों के इस्तेमाल की सलाह नहीं दी जाती है. इसलिए, इस प्रोसेस को बंद माना जाना चाहिए. Pch फ़ाइलों को असल में पहले से कंपाइल नहीं किया जाता है. इसलिए, यह किसी फ़ाइल की रफ़्तार को बेहतर बनाने की सुविधा नहीं है. इसके बजाय, यह सिर्फ़ ग्लोबल डिपेंडेंसी है. बिल्ड की क्षमता के हिसाब से, आपको उन सोर्स में सीधे तौर पर जानकारी देनी होती है जिनकी आपको ज़रूरत है.
sdk_dylibs

स्ट्रिंग की सूची; डिफ़ॉल्ट [] है

SDK टूल .dylib लाइब्रेरी के नाम जिनसे लिंक करना है. उदाहरण के लिए, "libz" या "libarchive". अगर बाइनरी के डिपेंडेंसी ट्री में C++ या Objective-C++ सोर्स हैं, तो "libc++" अपने-आप शामिल हो जाता है. किसी बाइनरी को लिंक करते समय, उस बाइनरी के ट्रांज़िटिव डिपेंडेंसी ग्राफ़ में दी गई सभी लाइब्रेरी इस्तेमाल की जाती हैं.
sdk_frameworks

स्ट्रिंग की सूची; डिफ़ॉल्ट [] है

SDK टूल के फ़्रेमवर्क के नाम जिनके साथ लिंक करना है. जैसे, "AddressBook", "QuartzCore"). iOS, tvOS, visionOS, और watchOS प्लैटफ़ॉर्म के लिए, ऐप्लिकेशन बनाते समय "UIKit" और "Foundation" हमेशा शामिल किए जाते हैं. macOS के लिए, सिर्फ़ "फ़ाउंडेशन" हमेशा शामिल होता है.

टॉप लेवल की Apple बाइनरी को लिंक करने पर, उस बाइनरी के ट्रांज़िटिव डिपेंडेंसी ग्राफ़ में लिस्ट किए गए सभी SDK फ़्रेमवर्क लिंक होते हैं.

sdk_includes

स्ट्रिंग की सूची; डिफ़ॉल्ट [] है

इस टारगेट और टारगेट के हिसाब से सभी #include/#import खोज पाथ की सूची, जिसमें हर पाथ $(SDKROOT)/usr/include से जुड़ा है.
textual_hdrs

लेबल की सूची; डिफ़ॉल्ट [] है

C, C++, Objective-C, और Objective-C++ फ़ाइलों की सूची, जिन्हें इस नियम में मौजूद सोर्स फ़ाइलों के हेडर के तौर पर या इस लाइब्रेरी का इस्तेमाल करने वाले उपयोगकर्ताओं ने शामिल किया है. hdrs के उलट, इन्हें अलग-अलग सोर्स से इकट्ठा नहीं किया जाएगा.
weak_sdk_frameworks

स्ट्रिंग की सूची; डिफ़ॉल्ट [] है

ऐसे SDK टूल फ़्रेमवर्क के नाम जिनके साथ कमज़ोर लिंक किए जाने चाहिए. उदाहरण के लिए, "MediaAccessibility". आम तौर पर लिंक किए गए SDK टूल की तुलना में, कमज़ोर तरीके से लिंक किए गए फ़्रेमवर्क के सिंबल रनटाइम के दौरान उनके न होने पर गड़बड़ी नहीं होती.

available_xcodes

नियम का सोर्स देखें
available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)

रिमोट तरीके से और स्थानीय तौर पर उपलब्ध xcode वर्शन के बारे में बताने के लिए, xcode_config नियम के इंस्टेंस के आधार पर इस नियम के दो टारगेट पर भरोसा किया जा सकता है. इससे एक साथ उपलब्ध एक्सकोड में से कोई आधिकारिक xcode वर्शन चुनने की अनुमति मिलती है.

तर्क

विशेषताएं
name

नाम; ज़रूरी है

इस टारगेट के लिए यूनीक नाम.

default

लेबल; कॉन्फ़िगर नहीं किया जा सकता; ज़रूरी है

इस प्लैटफ़ॉर्म के लिए डिफ़ॉल्ट xcode वर्शन.
versions

लेबल की सूची कॉन्फ़िगर नहीं की जा सकती; डिफ़ॉल्ट रूप से यह [] पर सेट होती है

इस प्लैटफ़ॉर्म पर उपलब्ध xcode वर्शन.

xcode_config

नियम का सोर्स देखें
xcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)

--xcode_version फ़्लैग को आधिकारिक xcode वर्शन में बदलने के लिए, इस नियम के एक टारगेट का रेफ़रंस --xcode_version_config बिल्ड फ़्लैग से दिया जा सकता है. इससे रजिस्टर किए गए कई उपनामों में से, एक आधिकारिक xcode वर्शन चुनने की अनुमति मिलती है.

तर्क

विशेषताएं
name

नाम; ज़रूरी है

इस टारगेट के लिए यूनीक नाम.

default

लेबल; कॉन्फ़िगरेशन नहीं किया जा सकता; डिफ़ॉल्ट रूप से None होता है

इस्तेमाल करने के लिए xcode का डिफ़ॉल्ट आधिकारिक वर्शन. अगर xcode_version बिल्ड फ़्लैग नहीं दिया गया है, तो दिए गए xcode_version टारगेट से तय किया गया वर्शन इस्तेमाल करें. अगर कोई versions सेट है, तो यह ज़रूरी है. अगर remote_versions या local_versions सेट है, तो हो सकता है कि यह सेट न हो.
local_versions

लेबल; कॉन्फ़िगरेशन नहीं किया जा सकता; डिफ़ॉल्ट रूप से None होता है

स्थानीय तौर पर उपलब्ध xcode_version टारगेट. इन दोनों का इस्तेमाल local_versions के साथ किया जाता है, ताकि आप सभी उपलब्ध वर्शन चुन सकें. अगर versions सेट है, तो हो सकता है कि यह सेट न हो.
remote_versions

लेबल; कॉन्फ़िगरेशन नहीं किया जा सकता; डिफ़ॉल्ट रूप से None होता है

xcode_version टारगेट, जो कहीं से भी उपलब्ध हैं. इन दोनों का इस्तेमाल remote_versions के साथ किया जाता है, ताकि आप सभी उपलब्ध वर्शन चुन सकें. अगर versions सेट है, तो हो सकता है कि यह सेट न हो.
versions

लेबल की सूची कॉन्फ़िगर नहीं की जा सकती; डिफ़ॉल्ट रूप से यह [] पर सेट होती है

xcode_version टारगेट स्वीकार किए गए, जिनका इस्तेमाल किया जा सकता है. अगर xcode_version बिल्ड फ़्लैग की वैल्यू किसी उपनाम या दिए गए xcode_version टारगेट के वर्शन नंबर से मेल खाती है, तो मैच होने वाले टारगेट का इस्तेमाल किया जाएगा. अगर remote_versions या local_versions सेट है, तो हो सकता है कि यह सेट न हो.

xcode_version

नियम का सोर्स देखें
xcode_version(name, default_ios_sdk_version, default_macos_sdk_version, default_tvos_sdk_version, default_visionos_sdk_version, default_watchos_sdk_version, deprecation, distribs, features, licenses, tags, testonly, version, visibility)

यह एक आधिकारिक xcode वर्शन को दिखाता है, जिसमें उस xcode वर्शन के लिए स्वीकार किए जाने वाले उपनाम होते हैं. xcode_config नियम देखें.

तर्क

विशेषताएं
name

नाम; ज़रूरी है

इस टारगेट के लिए यूनीक नाम.

default_ios_sdk_version

स्ट्रिंग; कॉन्फ़िगर नहीं की जा सकती; डिफ़ॉल्ट रूप से "" पर सेट है

iOS sdk वर्शन, जिसे Xcode के इस वर्शन के इस्तेमाल के दौरान डिफ़ॉल्ट रूप से इस्तेमाल किया जाता है. ios_sdk_version बिल्ड फ़्लैग यहां बताई गई वैल्यू को बदल देगा.
default_macos_sdk_version

स्ट्रिंग; कॉन्फ़िगर नहीं की जा सकती; डिफ़ॉल्ट रूप से "" पर सेट है

macosx sdk वर्शन, जिसे xcode के इस वर्शन के इस्तेमाल के दौरान डिफ़ॉल्ट रूप से इस्तेमाल किया जाता है. macos_sdk_version बिल्ड फ़्लैग यहां बताई गई वैल्यू को बदल देगा.
default_tvos_sdk_version

स्ट्रिंग; कॉन्फ़िगर नहीं की जा सकती; डिफ़ॉल्ट रूप से "" पर सेट है

tvos sdk वर्शन, जिसे xcode के इस वर्शन के इस्तेमाल के दौरान डिफ़ॉल्ट रूप से इस्तेमाल किया जाता है. tvos_sdk_version बिल्ड फ़्लैग यहां बताई गई वैल्यू को बदल देगा.
default_visionos_sdk_version

स्ट्रिंग; कॉन्फ़िगर नहीं की जा सकती; डिफ़ॉल्ट रूप से "" पर सेट है

visionos sdk वर्शन, जिसे xcode के इस वर्शन के इस्तेमाल के दौरान डिफ़ॉल्ट रूप से इस्तेमाल किया जाता है. visionos_sdk_version बिल्ड फ़्लैग यहां बताई गई वैल्यू को बदल देगा.
default_watchos_sdk_version

स्ट्रिंग; कॉन्फ़िगर नहीं की जा सकती; डिफ़ॉल्ट रूप से "" पर सेट है

Watchos sdk वर्शन, जिसे xcode के इस वर्शन के इस्तेमाल के दौरान डिफ़ॉल्ट रूप से इस्तेमाल किया जाता है. watchos_sdk_version बिल्ड फ़्लैग यहां बताई गई वैल्यू को बदल देगा.
version

स्ट्रिंग; कॉन्फ़िगर नहीं की जा सकती; ज़रूरी है

Xcode के किसी वर्शन का आधिकारिक वर्शन नंबर.