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

नियम

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

Name; required

इस टारगेट के लिए एक खास नाम.

deps

List of labels; optional

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

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

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

List of strings; optional

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

List of labels; optional

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

objc_import

objc_import(name, 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

Name; required

इस टारगेट के लिए एक खास नाम.

hdrs

List of labels; optional

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

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

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

Boolean; optional; default is False

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

List of labels; required

ऑब्जेक्टिव-सी टारगेट के लिए उपलब्ध कराई गई .a फ़ाइलों की सूची, जो इस टारगेट पर निर्भर है.
includes

List of strings; optional

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

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

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

sdk_dylibs

List of strings; optional

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

List of strings; optional

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

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

sdk_includes

List of strings; optional

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

List of labels; optional

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

List of strings; optional

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, includes, licenses, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, runtime_deps, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)

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

तर्क

एट्रिब्यूट
name

Name; required

इस टारगेट के लिए एक खास नाम.

deps

List of labels; optional

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

List of labels; optional

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

List of labels; optional

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

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

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

Boolean; optional; default is False

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

List of strings; optional

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

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

defines

List of strings; optional

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

Boolean; optional; default is False

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

List of strings; optional

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

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

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

linkopts

List of strings; optional

लिंकर को पास करने के लिए अतिरिक्त फ़्लैग.
module_map

Label; optional

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

String; optional

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

List of labels; optional

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

Label; optional

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

List of labels; optional

रनटाइम के दौरान देर से लोड होने वाले फ़्रेमवर्क टारगेट की सूची. ये ऐप्लिकेशन बंडल में शामिल होते हैं, लेकिन बिल्ड के समय इन्हें लिंक नहीं किया जाता.
sdk_dylibs

List of strings; optional

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

List of strings; optional

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

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

sdk_includes

List of strings; optional

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

List of labels; optional

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

List of strings; optional

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

available_xcodes

available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)

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

तर्क

एट्रिब्यूट
name

Name; required

इस टारगेट के लिए एक खास नाम.

default

Label; required; nonconfigurable

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

List of labels; optional; nonconfigurable

इस प्लैटफ़ॉर्म पर उपलब्ध 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

Name; required

इस टारगेट के लिए एक खास नाम.

default

Label; optional; nonconfigurable

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

Label; optional; nonconfigurable

xcode_version targets that are available locally. These are used along with local_versions to select a mutually available version. This may not be set if versions is set.
remote_versions

Label; optional; nonconfigurable

xcode_version targets that are available remotely. These are used along with remote_versions to select a mutually available version. This may not be set if versions is set.
versions

List of labels; optional; nonconfigurable

xcode_version targets that may be used. If the value of the xcode_version build flag matches one of the aliases or version number of any of the given xcode_version targets, the matching target will be used. This may not be set if remote_versions or local_versions is set. को स्वीकार किया गया

xcode_version

xcode_version(name, default_ios_sdk_version, default_macos_sdk_version, default_tvos_sdk_version, default_watchos_sdk_version, deprecation, distribs, features, licenses, tags, testonly, version, visibility)

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

तर्क

एट्रिब्यूट
name

Name; required

इस टारगेट के लिए एक खास नाम.

default_ios_sdk_version

String; optional; nonconfigurable

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

String; optional; nonconfigurable

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

String; optional; nonconfigurable

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

String; optional; nonconfigurable

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

String; required; nonconfigurable

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