नियम
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टारगेट की सूची. इनमें ऐसी Java फ़ाइलें होती हैं जिन्हें Objective-C में ट्रांसपाइल किया जाना है.
 J2ObjC ट्रांसलेशन, ट्रांज़िटिव क्लोज़र में शामिल Java सोर्स फ़ाइलों के टाइप के हिसाब से अलग-अलग तरीके से काम करता है.  उपयोगकर्ता, J2ObjC से जनरेट की गई हेडर फ़ाइलों को अपने कोड में इंपोर्ट कर सकते हैं. इन फ़ाइलों के इंपोर्ट पाथ, ओरिजनल Java आर्टफ़ैक्ट का रूट-रिलेटिव पाथ होता है. उदाहरण के लिए,
         
        अगर proto_library के नियम, इस नियम के ट्रांज़िटिव क्लोज़र में हैं, तो J2ObjC protos भी बाइनरी लेवल पर जनरेट, कंपाइल, और लिंक किए जाएंगे. प्रोटो
         | 
| entry_classes | स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू  --j2objc_dead_code_removal
        चालू है, तो इस एट्रिब्यूट को शामिल करना ज़रूरी है. Java क्लास को उनके कैननिकल नामों में बताया जाना चाहिए. ये नाम, Java लैंग्वेज स्पेसिफ़िकेशन के हिसाब से तय किए जाते हैं.--j2objc_dead_code_removalफ़्लैग के बारे में बताने पर, एंट्री क्लास की सूची को ट्रांज़िटिव तरीके से इकट्ठा किया जाएगा. साथ ही, इसका इस्तेमाल डेड कोड का विश्लेषण करने के लिए एंट्री पॉइंट के तौर पर किया जाएगा.
        इसके बाद, इस्तेमाल नहीं की गई क्लास को फ़ाइनल ObjC ऐप्लिकेशन बंडल से हटा दिया जाएगा. | 
| jre_deps | लेबल की सूची; डिफ़ॉल्ट वैल्यू  j2objc_libraryनियम से अनुवादित किए गए सभी Java कोड के लिए ज़रूरी अतिरिक्त JRE इम्यूलेशन लाइब्रेरी की सूची. सिर्फ़ मुख्य 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 | लेबल की सूची; डिफ़ॉल्ट वैल्यू  इन हेडर में, लाइब्रेरी के सार्वजनिक इंटरफ़ेस के बारे में बताया गया है. इन्हें इस नियम या इससे जुड़े नियमों में शामिल करने के लिए उपलब्ध कराया जाएगा. इस लाइब्रेरी के क्लाइंट को जिन हेडर को शामिल नहीं करना है उन्हें srcs एट्रिब्यूट में लिस्ट किया जाना चाहिए. अगर मॉड्यूल चालू हैं, तो इन्हें सोर्स से अलग कंपाइल किया जाएगा. | 
| alwayslink | बूलियन; डिफ़ॉल्ट वैल्यू  srcsऔरnon_arc_srcsमें दी गई फ़ाइलों के लिए सभी ऑब्जेक्ट फ़ाइलों में लिंक होगा. भले ही, कुछ में बाइनरी से रेफ़रंस किए गए सिंबल मौजूद न हों.
          यह तब काम आता है, जब आपके कोड को बाइनरी में कोड के ज़रिए साफ़ तौर पर कॉल नहीं किया जाता. उदाहरण के लिए, अगर आपका कोड किसी सेवा से मिले कॉलबैक को पाने के लिए रजिस्टर करता है. | 
| archives | लेबल की सूची; ज़रूरी हैObjective-C टारगेट को दी गई .aफ़ाइलों की सूची. ये टारगेट, इस टारगेट पर निर्भर करते हैं. | 
| includes | स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू  #include/#importखोज के पाथ की सूची.
          ऐसा इसलिए किया जाता है, ताकि तीसरे पक्ष और ओपन-सोर्स लाइब्रेरी के साथ काम किया जा सके. ये लाइब्रेरी, अपने#import/#includeस्टेटमेंट में पूरे वर्कस्पेस का पाथ नहीं बताती हैं.
          पाथ को पैकेज डायरेक्ट्री के हिसाब से तय किया जाता है. साथ ही, इसमें असल क्लाइंट रूट के अलावा, genfiles और bin रूट (जैसे,  सीओपीटीएस के उलट, इन फ़्लैग को इस नियम और इस पर निर्भर हर नियम के लिए जोड़ा जाता है. (ध्यान दें: यह उन नियमों के बारे में नहीं है जिन पर यह निर्भर करता है!) बहुत सावधानी बरतें, क्योंकि इससे आपकी पहुंच पर काफ़ी असर पड़ सकता है. अगर आपको किसी तरह का संदेह है, तो COPTS में "-iquote" फ़्लैग जोड़ें. | 
| sdk_dylibs | स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू  | 
| sdk_frameworks | स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू  टॉप लेवल के Apple बाइनरी को लिंक करने पर, उस बाइनरी के ट्रांज़िटिव डिपेंडेंसी ग्राफ़ में शामिल सभी एसडीके फ़्रेमवर्क लिंक हो जाते हैं. | 
| sdk_includes | स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू  #include/#importखोज पाथ की सूची. इसमें हर पाथ,$(SDKROOT)/usr/includeके हिसाब से होता है. | 
| textual_hdrs | लेबल की सूची; डिफ़ॉल्ट वैल्यू  | 
| weak_sdk_frameworks | स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू  | 
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 | लेबल की सूची; डिफ़ॉल्ट वैल्यू  | 
| hdrs | लेबल की सूची; डिफ़ॉल्ट वैल्यू  इन हेडर में, लाइब्रेरी के सार्वजनिक इंटरफ़ेस के बारे में बताया गया है. इन्हें इस नियम या इससे जुड़े नियमों में शामिल करने के लिए उपलब्ध कराया जाएगा. इस लाइब्रेरी के क्लाइंट को जिन हेडर को शामिल नहीं करना है उन्हें srcs एट्रिब्यूट में लिस्ट किया जाना चाहिए. अगर मॉड्यूल चालू हैं, तो इन्हें सोर्स से अलग कंपाइल किया जाएगा. | 
| alwayslink | बूलियन; डिफ़ॉल्ट वैल्यू  srcsऔरnon_arc_srcsमें दी गई फ़ाइलों के लिए सभी ऑब्जेक्ट फ़ाइलों में लिंक होगा. भले ही, कुछ में बाइनरी से रेफ़रंस किए गए सिंबल मौजूद न हों.
          यह तब काम आता है, जब आपके कोड को बाइनरी में कोड के ज़रिए साफ़ तौर पर कॉल नहीं किया जाता. उदाहरण के लिए, अगर आपका कोड किसी सेवा से मिले कॉलबैक को पाने के लिए रजिस्टर करता है. | 
| copts | स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू  ध्यान दें कि जनरेट किए गए Xcode प्रोजेक्ट के लिए, copts में "-I" फ़्लैग का इस्तेमाल करके तय किए गए डायरेक्ट्री पाथ को पार्स किया जाता है. अगर वे रिलेटिव पाथ हैं, तो उनके पहले "$(WORKSPACE_ROOT)/" जोड़ा जाता है. साथ ही, उन्हें Xcode के टारगेट से जुड़े हेडर सर्च पाथ में जोड़ा जाता है. | 
| defines | स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू  -Dफ़्लैग. येKEY=VALUEया सिर्फ़KEYके फ़ॉर्म में होने चाहिए. साथ ही, इन्हें इस टारगेट के कंपाइलर को (coptsकी तरह) ही नहीं, बल्कि इस टारगेट के सभीobjc_डिपेंडेंट को भी पास किया जाता है.
          "वैरिएबल बनाएं" के हिसाब से बदलाव किया जा सकता है. साथ ही, बोर्न शेल टोकनाइज़ेशन के हिसाब से बदलाव किया जा सकता है. | 
| enable_modules | बूलियन; डिफ़ॉल्ट वैल्यू  | 
| implementation_deps | लेबल की सूची; डिफ़ॉल्ट वैल्यू  depsके उलट, इन लाइब्रेरी के हेडर और शामिल किए गए पाथ (और इनके सभी ट्रांज़िटिव डिपेंडेंसी) का इस्तेमाल सिर्फ़ इस लाइब्रेरी को कंपाइल करने के लिए किया जाता है. इनका इस्तेमाल उन लाइब्रेरी के लिए नहीं किया जाता जो इस पर निर्भर करती हैं.implementation_depsके साथ बताई गई लाइब्रेरी अब भी उन बाइनरी टारगेट से जुड़ी हैं जो इस लाइब्रेरी पर निर्भर हैं. | 
| includes | स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू  #include/#importखोज के पाथ की सूची.
          ऐसा इसलिए किया जाता है, ताकि तीसरे पक्ष और ओपन-सोर्स लाइब्रेरी के साथ काम किया जा सके. ये लाइब्रेरी, अपने#import/#includeस्टेटमेंट में पूरे वर्कस्पेस का पाथ नहीं बताती हैं.
          पाथ को पैकेज डायरेक्ट्री के हिसाब से तय किया जाता है. साथ ही, इसमें असल क्लाइंट रूट के अलावा, genfiles और bin रूट (जैसे,  सीओपीटीएस के उलट, इन फ़्लैग को इस नियम और इस पर निर्भर हर नियम के लिए जोड़ा जाता है. (ध्यान दें: यह उन नियमों के बारे में नहीं है जिन पर यह निर्भर करता है!) बहुत सावधानी बरतें, क्योंकि इससे आपकी पहुंच पर काफ़ी असर पड़ सकता है. अगर आपको किसी तरह का संदेह है, तो COPTS में "-iquote" फ़्लैग जोड़ें. | 
| linkopts | स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू  | 
| module_map | लेबल; डिफ़ॉल्ट वैल्यू  | 
| module_name | स्ट्रिंग; डिफ़ॉल्ट वैल्यू  | 
| non_arc_srcs | लेबल की सूची; डिफ़ॉल्ट वैल्यू  | 
| pch | लेबल; डिफ़ॉल्ट वैल्यू  | 
| sdk_dylibs | स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू  | 
| sdk_frameworks | स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू  टॉप लेवल के Apple बाइनरी को लिंक करने पर, उस बाइनरी के ट्रांज़िटिव डिपेंडेंसी ग्राफ़ में शामिल सभी एसडीके फ़्रेमवर्क लिंक हो जाते हैं. | 
| sdk_includes | स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू  #include/#importखोज पाथ की सूची. इसमें हर पाथ,$(SDKROOT)/usr/includeके हिसाब से होता है. | 
| textual_hdrs | लेबल की सूची; डिफ़ॉल्ट वैल्यू  | 
| weak_sdk_frameworks | स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू  | 
available_xcodes
नियम का सोर्स देखेंavailable_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)
इस नियम के दो टारगेट, xcode_config नियम के इंस्टेंस पर निर्भर हो सकते हैं. इससे, रिमोट और लोकल तौर पर उपलब्ध xcode वर्शन के बारे में पता चलता है.
इससे, उपलब्ध सभी xcode में से, xcode के आधिकारिक वर्शन को चुना जा सकता है.
तर्क
| विशेषताएं | |
|---|---|
| name | नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. | 
| default | लेबल; कॉन्फ़िगर नहीं किया जा सकता; ज़रूरी हैइस प्लैटफ़ॉर्म के लिए, xcode का डिफ़ॉल्ट वर्शन. | 
| versions | लेबल की सूची; कॉन्फ़िगर नहीं किया जा सकता; डिफ़ॉल्ट वैल्यू  | 
xcode_config
नियम का सोर्स देखेंxcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)
इस नियम के किसी एक टारगेट को --xcode_version_config build
flag से रेफ़रंस किया जा सकता है, ताकि --xcode_version_config फ़्लैग को Xcode के स्वीकार किए गए आधिकारिक वर्शन में बदला जा सके.--xcode_version
इससे, रजिस्टर किए गए कई एलियास में से किसी आधिकारिक xcode वर्शन को चुना जा सकता है.
तर्क
| विशेषताएं | |
|---|---|
| name | नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. | 
| default | लेबल; कॉन्फ़िगर नहीं किया जा सकता; डिफ़ॉल्ट वैल्यू  xcode_versionबिल्ड फ़्लैग नहीं दिया गया है, तो दिए गएxcode_versionटारगेट के हिसाब से तय किए गए वर्शन का इस्तेमाल किया जाना चाहिए. अगर कोईversionsसेट किया गया है, तो इसकी ज़रूरत होती है. अगरremote_versionsयाlocal_versionsको सेट किया गया है, तो इसे सेट नहीं किया जा सकता. | 
| local_versions | लेबल; कॉन्फ़िगर नहीं किया जा सकता; डिफ़ॉल्ट वैल्यू  xcode_versionटारगेट, जो स्थानीय तौर पर उपलब्ध हैं.
        इनका इस्तेमालlocal_versionsके साथ किया जाता है, ताकि एक-दूसरे के साथ काम करने वाले वर्शन को चुना जा सके. अगरversionsसेट है, तो इसे सेट नहीं किया जा सकता. | 
| remote_versions | लेबल; कॉन्फ़िगर नहीं किया जा सकता; डिफ़ॉल्ट वैल्यू  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_versionबिल्ड फ़्लैग, यहां दी गई वैल्यू को बदल देगा. | 
| default_macos_sdk_version | स्ट्रिंग; बदला नहीं जा सकता; डिफ़ॉल्ट वैल्यू  macos_sdk_versionबिल्ड फ़्लैग, यहां दी गई वैल्यू को बदल देगा. | 
| default_tvos_sdk_version | स्ट्रिंग; बदला नहीं जा सकता; डिफ़ॉल्ट वैल्यू  tvos_sdk_versionबिल्ड फ़्लैग, यहां दी गई वैल्यू को बदल देगा. | 
| default_visionos_sdk_version | स्ट्रिंग; बदला नहीं जा सकता; डिफ़ॉल्ट वैल्यू  visionos_sdk_versionबिल्ड फ़्लैग, यहां दी गई वैल्यू को बदल देगा. | 
| default_watchos_sdk_version | स्ट्रिंग; बदला नहीं जा सकता; डिफ़ॉल्ट वैल्यू  watchos_sdk_versionबिल्ड फ़्लैग, यहां दी गई वैल्यू को बदल देगा. | 
| version | स्ट्रिंग; बदलाव नहीं किया जा सकता; ज़रूरी हैXcode के किसी वर्शन का आधिकारिक वर्शन नंबर. |