मकसद-C नियम

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

नियम

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 ट्रांसपाइलेशन फ़्लैग के बारे में, कमांड लाइन में बिल्ड फ़्लैग --j2objc_translation_flags का इस्तेमाल करके बताया जा सकता है.

कृपया ध्यान दें कि किसी 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 फ़ाइलें मौजूद हैं और उन्हें Objective-C में ट्रांसपेर किया जाना है.

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

J2ObjC अनुवाद, ट्रांज़िट समय में शामिल की गई सोर्स Java सोर्स फ़ाइलों के टाइप के आधार पर अलग-अलग तरीके से काम करता है. java_library में से हर srcs में शामिल हर .java सोर्स फ़ाइल के लिए, उससे जुड़ी .h और .m सोर्स फ़ाइल जनरेट की जाएगी. srcs में से java_library या 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 क्लास की सूची जिनके अनुवाद किए गए ObjC वर्शन सीधे ObjC कोड से इस्तेमाल किए जाएंगे. अगर --j2objc_dead_code_removal का फ़्लैग चालू है, तो यह एट्रिब्यूट ज़रूरी है. Java की क्लास को उनके नाम में बताया जाना चाहिए, जैसा कि Java की खास बातों में बताया गया है. अगर फ़्लैग --j2objc_dead_code_removal बताया जाता है, तो एंट्री क्लास की सूची समय के साथ इकट्ठा की जाएगी. साथ ही, इस्तेमाल किए जा रहे कोड को पूरा करने के लिए, एंट्री पॉइंट के तौर पर इसका इस्तेमाल किया जाएगा. इस्तेमाल नहीं की गई क्लास को ObjC ऐप्लिकेशन बंडल से हटा दिया जाएगा.
jre_deps

List of labels; optional

अतिरिक्त JRE एम्युलेशन लाइब्रेरी की सूची, जो इस j2objc_library नियम के हिसाब से अनुवाद किए गए सभी Java कोड के लिए ज़रूरी है. सिर्फ़ मुख्य 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

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

List of labels; required

Objective-C टारगेट को दी गई .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" और "Foundation" हमेशा शामिल किए जाते हैं. 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++ फ़ाइलों की सूची जिन्हें इस नियम में मौजूद सोर्स फ़ाइलों या इस लाइब्रेरी के उपयोगकर्ताओं की मदद से हेडर के तौर पर शामिल किया गया है. hdrs के उलट, इन्हें अलग-अलग सोर्स से इकट्ठा नहीं किया जाएगा.
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, 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 फ़ाइलों में कंपाइल किया जाता है. हेडर फ़ाइलें इस टारगेट के src एट्रिब्यूट में किसी भी सोर्स या हेडर से शामिल/इंपोर्ट की जा सकती हैं, लेकिन hdrs या ऐसे किसी भी टारगेट में शामिल नहीं की जा सकतीं जो इस नियम पर निर्भर हो. इसके अलावा, पहले से कंपाइल की गई .o फ़ाइलों को src के तौर पर दिया जा सकता है. दी गई .o फ़ाइलों और बिल्ड के आर्किटेक्चर में समानता बनाए रखें. इससे, लिंकर के लिंक की गड़बड़ियां मौजूद रहेंगी.
hdrs

List of labels; optional

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

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

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

Boolean; optional; default is False

अगर इस बंडल की कोई बंडल या बाइनरी फ़ाइल, सीधे तौर पर या किसी दूसरे तरीके से इस लाइब्रेरी पर निर्भर करती है, तो उसे 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

clang मॉड्यूल सहायता (-fmodules के ज़रिए) चालू करता है. इसे 1 पर सेट करने पर, @import सिस्टम के हेडर और दूसरे टारगेट यहां किए जा सकते हैं: @import UIKit; @importPath_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

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

Label; optional

कंपाइल की जा रही हर सोर्स फ़ाइल में पहले जोड़े जाने के लिए, हेडर फ़ाइल. (arc और non-arc, दोनों). BUILD फ़ाइलों में pch फ़ाइलों के इस्तेमाल की सलाह नहीं दी जाती है. इसलिए, इस पर रोक लगा दी जानी चाहिए. पिच फ़ाइलों को असल में कंपाइल नहीं किया गया है. इसलिए, यह सिर्फ़ बिल्ड-स्पीड एन्हैंसमेंट के तौर पर काम नहीं करता. यह पूरी दुनिया पर निर्भर करता है. बिल्ड परफ़ॉर्मेंस के नज़रिए से, आप यह बेहतर तरीके से शामिल कर सकते हैं कि आपको सीधे उन सोर्स में क्या चाहिए जिनकी आपको ज़रूरत है.
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" और "Foundation" हमेशा शामिल किए जाते हैं. 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++ फ़ाइलों की सूची जिन्हें इस नियम में मौजूद सोर्स फ़ाइलों या इस लाइब्रेरी के उपयोगकर्ताओं की मदद से हेडर के तौर पर शामिल किया गया है. hdrs के उलट, इन्हें अलग-अलग सोर्स से इकट्ठा नहीं किया जाएगा.
weak_sdk_frameworks

List of strings; optional

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

उपलब्ध_xकोड

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

इस नियम के दो टारगेट, xcode_config नियम के इंस्टेंस पर निर्भर हो सकते हैं. ये टारगेट, रिमोट तरीके से और स्थानीय तौर पर उपलब्ध xcode के वर्शन के बारे में बताने के लिए करते हैं. इससे, सभी उपलब्ध 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 कोड का वह वर्शन, जिसका इस्तेमाल xcode के इस वर्शन के इस्तेमाल के दौरान डिफ़ॉल्ट रूप से किया जाता है. ios_sdk_version बिल्ड फ़्लैग यहां दिए गए मान को बदल देगा.
default_macos_sdk_version

String; optional; nonconfigurable

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

String; optional; nonconfigurable

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

String; optional; nonconfigurable

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

String; required; nonconfigurable

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