नियम
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 सोर्स फ़ाइलों के टाइप के आधार पर, J2ObjC ट्रांसलेशन अलग-अलग तरीके से काम करता है. उपयोगकर्ता अपने कोड में J2ObjC से जनरेट की गई हेडर फ़ाइलें इंपोर्ट कर सकते हैं. इन फ़ाइलों के इंपोर्ट पाथ, मूल Java आर्टफ़ैक्ट के रूट से जुड़े पाथ होते हैं. उदाहरण के लिए,
अगर proto_library नियम इस नियम के ट्रांज़िशन क्लोज़र में हैं, तो J2ObjC प्रोटो भी जनरेट किए जाएंगे, संकलित किए जाएंगे, और बाइनरी लेवल पर लिंक किए जाएंगे. प्रोटो
|
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 स्टेटमेंट में पूरे फ़ाइल फ़ोल्डर के पाथ की जानकारी नहीं देती.
पाथ की व्याख्या पैकेज डायरेक्ट्री के हिसाब से की जाती है और
असल क्लाइंट रूट के साथ,
genfile और bin रूट (जैसे, COPTS के उलट, ये फ़्लैग इस नियम और उस पर निर्भर हर नियम के लिए जोड़े जाते हैं. (ध्यान दें: वे नियम नहीं हैं जिन पर यह निर्भर करता है!) बहुत सावधान रहें, क्योंकि इसके दूर तक पहुंचने वाले प्रभाव हो सकते हैं. जब भी आपको पता न हो कि COPTS में "-iquote" फ़्लैग जोड़ें. |
sdk_dylibs
|
स्ट्रिंग की सूची; डिफ़ॉल्ट |
sdk_frameworks
|
स्ट्रिंग की सूची; डिफ़ॉल्ट रूप से टॉप लेवल की Apple बाइनरी को लिंक करने पर, उस बाइनरी के ट्रांज़िटिव डिपेंडेंसी ग्राफ़ में लिस्ट किए गए सभी SDK फ़्रेमवर्क लिंक होते हैं. |
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 प्रोजेक्ट के लिए, कॉप्ट में "-I" फ़्लैग का इस्तेमाल करके बताए गए डायरेक्ट्री पाथ को पार्स किया जाता है. अगर वे मिलते-जुलते पाथ हैं, तो उन्हें "$(WorkSPACE_ROOT)/" से पहले जोड़ा जाता है. साथ ही, Xcode टारगेट के लिए, उन्हें हेडर के खोज पाथ में जोड़ा जाता है. |
defines
|
स्ट्रिंग की सूची; डिफ़ॉल्ट -D फ़्लैग. उन्हें KEY=VALUE या सिर्फ़ KEY के तौर पर होना चाहिए. साथ ही, उन्हें न सिर्फ़ इस टारगेट के लिए कंपाइलर को (copts के तौर पर) पास किया जाना चाहिए, बल्कि इस टारगेट के सभी objc_ डिपेंडेंट को भी पास किया जाना चाहिए.
"Make variable" के बदले और
Bourne shell टोकनाइज़ेशन के हिसाब से.
|
enable_modules
|
बूलियन; डिफ़ॉल्ट तौर पर |
implementation_deps
|
लेबल की सूची; डिफ़ॉल्ट deps से अलग, इन लाइब्रेरी के हेडर और शामिल पाथ (और इनके सभी ट्रांज़िटिव डिप) का इस्तेमाल सिर्फ़ इस लाइब्रेरी को कंपाइल करने के लिए किया जाता है, न कि इस लाइब्रेरी पर निर्भर लाइब्रेरी का. implementation_deps के साथ बताई गई लाइब्रेरी अब भी उन बाइनरी टारगेट में लिंक की गई हैं जो इस लाइब्रेरी पर निर्भर हैं.
|
includes
|
स्ट्रिंग की सूची; डिफ़ॉल्ट रूप से #include/#import खोज पाथ की सूची.
यह तीसरे पक्ष और ओपन-सोर्स लाइब्रेरी के लिए काम करता है, जो अपने #import/#include स्टेटमेंट में पूरे फ़ाइल फ़ोल्डर के पाथ की जानकारी नहीं देती.
पाथ की व्याख्या पैकेज डायरेक्ट्री के हिसाब से की जाती है और
असल क्लाइंट रूट के साथ,
genfile और bin रूट (जैसे, COPTS के उलट, ये फ़्लैग इस नियम और उस पर निर्भर हर नियम के लिए जोड़े जाते हैं. (ध्यान दें: वे नियम नहीं हैं जिन पर यह निर्भर करता है!) बहुत सावधान रहें, क्योंकि इसके दूर तक पहुंचने वाले प्रभाव हो सकते हैं. जब भी आपको पता न हो कि COPTS में "-iquote" फ़्लैग जोड़ें. |
linkopts
|
स्ट्रिंग की सूची; डिफ़ॉल्ट रूप से |
module_map
|
लेबल; डिफ़ॉल्ट |
module_name
|
स्ट्रिंग; डिफ़ॉल्ट रूप से |
non_arc_srcs
|
लेबल की सूची; डिफ़ॉल्ट |
pch
|
लेबल; डिफ़ॉल्ट |
sdk_dylibs
|
स्ट्रिंग की सूची; डिफ़ॉल्ट रूप से |
sdk_frameworks
|
स्ट्रिंग की सूची; डिफ़ॉल्ट रूप से टॉप लेवल की Apple बाइनरी को लिंक करने पर, उस बाइनरी के ट्रांज़िटिव डिपेंडेंसी ग्राफ़ में लिस्ट किए गए सभी SDK फ़्रेमवर्क लिंक होते हैं. |
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 वर्शन के बारे में बताने के लिए, xcode_config
नियम के इंस्टेंस के आधार पर इस नियम के दो टारगेट पर भरोसा किया जा सकता है.
इससे, एक साथ उपलब्ध xcodes में से किसी आधिकारिक 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
फ़्लैग को आधिकारिक xcode वर्शन में बदलने के लिए, इस नियम के एक टारगेट का रेफ़रंस --xcode_version_config
बिल्ड फ़्लैग से दिया जा सकता है.
इससे रजिस्टर किए गए कई उपनामों में से, एक आधिकारिक 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 के किसी वर्शन का आधिकारिक वर्शन नंबर. |