नियम
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 प्रोटो भी बिटरीवल लेवल पर जनरेट, कंपाइल, और लिंक-इन किए जाएंगे. proto
|
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 के उलट, ये फ़्लैग इस नियम और उस पर निर्भर हर नियम के लिए जोड़े जाते हैं. (ध्यान दें: उन नियमों के बारे में नहीं जिन पर यह निर्भर करता है!) बहुत सावधान रहें, क्योंकि इससे कई चीज़ों पर असर पड़ सकता है. अगर आपको कोई संदेह है, तो 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 प्रोजेक्ट के लिए, copts में "-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 स्टेटमेंट में, वर्कस्पेस का पूरा पाथ नहीं बताती हैं.
पाथ को पैकेज डायरेक्ट्री के हिसाब से समझा जाता है. साथ ही, असल क्लाइंट रूट के अलावा, genfiles और 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_config
नियम के किसी इंस्टेंस में, इस नियम के दो टारगेट का इस्तेमाल किया जा सकता है. इससे, रिमोट और लोकल तौर पर उपलब्ध Xcode वर्शन के बारे में पता चलता है.
इससे, एक साथ उपलब्ध 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 के किसी वर्शन का आधिकारिक वर्शन नंबर. |