नियम
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 सोर्स का अनुवाद करने के लिए J2ObjC का इस्तेमाल करता है Objective-C में फ़ाइलें शामिल की जाती हैं, जिनका इस्तेमाल objc_library और objc_binary के डिपेंडेंसी के तौर पर किया जा सकता है नियम. J2ObjC के बारे में विस्तृत जानकारी J2ObjC साइट
बिल्ड फ़्लैग का इस्तेमाल करके, ज़रूरत के मुताबिक J2ObjC ट्रांसपिलेशन फ़्लैग तय किए जा सकते हैं
--j2objc_translation_flags
.
कृपया ध्यान दें कि j2objc_library टारगेट में शामिल अनुवाद की गई फ़ाइलें को कंपाइलेशन के डिफ़ॉल्ट कॉन्फ़िगरेशन का इस्तेमाल करके कंपाइल किया जाता है. हालांकि, इसके लिए वही कॉन्फ़िगरेशन दिया जाता है जो एक objc_library नियम है जिसके एट्रिब्यूट में कंपाइलेशन का कोई विकल्प नहीं दिया गया है.
साथ ही, जनरेट किए गए कोड की डुप्लीकेट कॉपी को टारगेट लेवल पर हटाया जाता है, न कि सोर्स लेवल पर. अगर आपके पास दो अलग-अलग Java टारगेट में एक जैसी Java सोर्स फ़ाइलें शामिल हैं, तो आपको डुप्लीकेट सिंबल वाली गड़बड़ी दिख सकती है लिंक के समय पर. इस समस्या के समाधान का सही तरीका यह है कि शेयर की गई Java स्रोत फ़ाइलों को एक सामान्य लक्ष्य को अलग कर दें जिस पर निर्भर हो सकता है.
तर्क
विशेषताएं | |
---|---|
name |
नाम; आवश्यक इस टारगेट के लिए यूनीक नाम. |
deps
|
लेबल की सूची; डिफ़ॉल्ट रूप से j2objc_library , java_library ,
java_import और java_proto_library टारगेट, जिनमें यह शामिल है
Objective-C में ट्रांसपिल की जाने वाली Java फ़ाइलें.
J2ObjC अनुवाद के काम करने का तरीका, इस बात पर निर्भर करता है कि सोर्स Java सोर्स किस तरह का है
ऐसी फ़ाइलें जो अस्थायी तौर पर बंद किए जाने के दौरान शामिल की जाती हैं. इसमें शामिल हर .java स्रोत फ़ाइलों के लिए
उपयोगकर्ता अपने कोड में J2ObjC से जनरेट की गई हेडर फ़ाइलें इंपोर्ट कर सकते हैं.
ये फ़ाइलें, ओरिजनल Java आर्टफ़ैक्ट के रूट-रिलेटिव पाथ हैं. उदाहरण के लिए,
अगर proto_library नियम इस नियम के ट्रांज़िटिव क्लोज़र में हैं, तो J2ObjC Protos
इन्हें बाइनरी लेवल पर जनरेट, कंपाइल, और लिंक किया जा सकता है. प्रोटो के लिए
|
entry_classes
|
स्ट्रिंग की सूची; --j2objc_dead_code_removal
फ़्लैग चालू है, तो यह एट्रिब्यूट ज़रूरी है. Java की क्लास को उनके कैननिकल नाम में बताई जानी चाहिए
Java
भाषा की जानकारी.
--j2objc_dead_code_removal फ़्लैग होने पर, एंट्री क्लास की सूची
को अस्थायी तौर पर इकट्ठा किया जाएगा और खराब कोड का विश्लेषण करने के लिए, एंट्री पॉइंट के तौर पर इस्तेमाल किया जाएगा.
इसके बाद, इस्तेमाल नहीं की गई क्लास को ऑब्जेसी ऐप्लिकेशन बंडल के फ़ाइनल वर्शन से हटा दिया जाएगा.
|
jre_deps
|
लेबल की सूची; डिफ़ॉल्ट रूप से j2objc_library नियम. डिफ़ॉल्ट रूप से, सिर्फ़ मुख्य 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 रूट (उदाहरण के लिए, COPS के उलट, इस नियम के लिए ये फ़्लैग जोड़े जाते हैं और इस पर निर्भर सभी नियमों के लिए बनाया गया है. (ध्यान दें: वे नियम नहीं हैं जिन पर यह निर्भर करता है!) होना ध्यान रखें, क्योंकि इसके दूर तक पहुंचने वाले प्रभाव हो सकते हैं. संदेह होने पर, जोड़ें "-आईकोट" फ़्लैग करने के बजाय COPTS पर फ़्लैग कर सकते हैं. |
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 प्रोजेक्ट के लिए, "-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 रूट (उदाहरण के लिए, COPS के उलट, इस नियम के लिए ये फ़्लैग जोड़े जाते हैं और इस पर निर्भर सभी नियमों के लिए बनाया गया है. (ध्यान दें: वे नियम नहीं हैं जिन पर यह निर्भर करता है!) होना ध्यान रखें, क्योंकि इसके दूर तक पहुंचने वाले प्रभाव हो सकते हैं. संदेह होने पर, जोड़ें "-आईकोट" फ़्लैग करने के बजाय COPTS पर फ़्लैग कर सकते हैं. |
linkopts
|
स्ट्रिंग की सूची; |
module_map
|
लेबल; डिफ़ॉल्ट रूप से |
module_name
|
String; |
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 वर्शन चुनने की अनुमति मिलती है.
तर्क
विशेषताएं | |
---|---|
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
बिल्ड में दिया जा सकता है
फ़्लैग का इस्तेमाल करके, --xcode_version
फ़्लैग का स्वीकार किए गए आधिकारिक xcode वर्शन में अनुवाद करें.
इससे रजिस्टर किए गए कई उपनामों में से, एक आधिकारिक 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
|
String; कॉन्फ़िगर नहीं किया जा सकता; डिफ़ॉल्ट रूप से ios_sdk_version बिल्ड फ़्लैग यहां बताई गई वैल्यू को बदल देगा.
|
default_macos_sdk_version
|
String; कॉन्फ़िगर नहीं किया जा सकता; डिफ़ॉल्ट रूप से macos_sdk_version बिल्ड फ़्लैग यहां बताई गई वैल्यू को बदल देगा.
|
default_tvos_sdk_version
|
String; कॉन्फ़िगर नहीं किया जा सकता; डिफ़ॉल्ट रूप से tvos_sdk_version बिल्ड फ़्लैग यहां बताई गई वैल्यू को बदल देगा.
|
default_visionos_sdk_version
|
String; कॉन्फ़िगर नहीं किया जा सकता; डिफ़ॉल्ट रूप से visionos_sdk_version बिल्ड फ़्लैग यहां बताई गई वैल्यू को बदल देगा.
|
default_watchos_sdk_version
|
String; कॉन्फ़िगर नहीं किया जा सकता; डिफ़ॉल्ट रूप से watchos_sdk_version बिल्ड फ़्लैग यहां बताई गई वैल्यू को बदल देगा.
|
version
|
String; कॉन्फ़िगर नहीं किया जा सकता; आवश्यक Xcode के किसी वर्शन का आधिकारिक वर्शन नंबर. |