नियम
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 फ़ाइलें शामिल हैं और उन्हें ऑब्जेक्टिव-सी में ट्रांसपिल किया जाना है.
उन सभी J2ObjC अनुवाद की सुविधा, इनऐक्टिव क्लोज़र में शामिल सोर्स की
Java सोर्स फ़ाइलों के आधार पर अलग-अलग काम करती है. उपयोगकर्ता अपने कोड में J2ObjC से जनरेट की गई हेडर फ़ाइलें इंपोर्ट कर सकते हैं. इन फ़ाइलों के इंपोर्ट पाथ,
ओरिजनल Java आर्टफ़ैक्ट के रूट-रिलेटिव पाथ होते हैं. उदाहरण के लिए,
अगर Proto_library नियम इस नियम के ट्रांज़िटिव क्लोज़िंग में हैं, तो J2ObjC प्रोटो भी
बाइनरी लेवल पर जनरेट किए जाएंगे, कंपाइल किए जाएंगे, और लिंक किए जाएंगे. |
entry_classes
|
--j2objc_dead_code_removal
फ़्लैग चालू है, तो यह एट्रिब्यूट ज़रूरी है. Java क्लास को उनके कैननिकल नामों में बताया जाना चाहिए, जैसा कि Java
लैंग्वेज स्पेसिफ़िकेशन में बताया गया है.
--j2objc_dead_code_removal फ़्लैग के बारे में बताने पर, एंट्री क्लास की सूची को थोड़े समय के लिए इकट्ठा किया जाएगा. साथ ही, इसका इस्तेमाल बंद हो चुके कोड का विश्लेषण करने के लिए एंट्री पॉइंट के तौर पर किया जाएगा.
इसके बाद, इस्तेमाल नहीं की गई क्लास को फ़ाइनल ऑब्जेसी ऐप्लिकेशन बंडल से हटा दिया जाएगा.
|
jre_deps
|
j2objc_library नियम के मुताबिक किया गया है. 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 |
इस टारगेट के लिए एक खास नाम. |
hdrs
|
ये हेडर, लाइब्रेरी के सार्वजनिक इंटरफ़ेस के बारे में जानकारी देते हैं. साथ ही, इन्हें इस नियम में शामिल सोर्स या अन्य नियमों में शामिल किए जाने के लिए उपलब्ध कराया जाएगा. जो हेडर इस लाइब्रेरी के क्लाइंट के ज़रिए शामिल नहीं किए जाने चाहिए उन्हें srcs एट्रिब्यूट में लिस्ट किया जाना चाहिए. अगर मॉड्यूल चालू हैं, तो इन्हें सोर्स से अलग से कंपाइल किया जाएगा. |
alwayslink
|
srcs और non_arc_srcs में शामिल फ़ाइलों की सभी ऑब्जेक्ट फ़ाइलों से
लिंक हो जाएगी. भले ही, कुछ बंडल या बाइनरी में बाइनरी से रेफ़र किया गया कोई सिंबल न हो.
अगर आपके कोड को बाइनरी में साफ़ तौर पर कोड से कॉल नहीं किया गया है, तो ऐसा करना फ़ायदेमंद होता है. उदाहरण के लिए, अगर आपका कोड, किसी सेवा से मिलने वाले कॉलबैक को पाने के लिए रजिस्टर होता है.
|
archives
|
.a फ़ाइलों की सूची, जो इस टारगेट पर निर्भर है.
|
includes
|
#include/#import खोज पाथ की सूची.
यह ऐसे तीसरे पक्ष और ओपन सोर्स लाइब्रेरी के साथ काम करता है जो अपने
#import/#include स्टेटमेंट में फ़ाइल फ़ोल्डर का पूरा पाथ नहीं बताती हैं.
पाथ को पैकेज डायरेक्ट्री के हिसाब से इंटरप्रेट किया जाता है. साथ ही,
असल क्लाइंट रूट के साथ जेनफ़ाइलें और बिन रूट (जैसे, 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, includes, licenses, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, runtime_deps, 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
|
|
includes
|
#include/#import खोज पाथ की सूची.
यह ऐसे तीसरे पक्ष और ओपन सोर्स लाइब्रेरी के साथ काम करता है जो अपने
#import/#include स्टेटमेंट में फ़ाइल फ़ोल्डर का पूरा पाथ नहीं बताती हैं.
पाथ को पैकेज डायरेक्ट्री के हिसाब से इंटरप्रेट किया जाता है. साथ ही,
असल क्लाइंट रूट के साथ जेनफ़ाइलें और बिन रूट (जैसे, COPTS के उलट, ये फ़्लैग इस नियम और इस पर निर्भर हर नियम के लिए जोड़े जाते हैं. (ध्यान दें: वे नियम नहीं जिन पर निर्भर करता है!) सावधानी बरतें, क्योंकि इसके कई गंभीर नतीजे हो सकते हैं. किसी भी तरह का संदेह होने पर, COPTS के बजाय "-iquote" फ़्लैग जोड़ें. |
linkopts
|
|
module_map
|
|
module_name
|
|
non_arc_srcs
|
|
pch
|
|
runtime_deps
|
|
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
नियम के इंस्टेंस से इस नियम के दो टारगेट निर्भर हो सकते हैं.
इसकी मदद से, एक साथ उपलब्ध xcode में से कोई आधिकारिक xcode वर्शन चुना जा सकता है.
तर्क
एट्रिब्यूट | |
---|---|
name |
इस टारगेट के लिए एक खास नाम. |
default
|
|
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 |
remote_versions
|
xcode_version |
versions
|
xcode_version को स्वीकार किया गया |
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 |
इस टारगेट के लिए एक खास नाम. |
default_ios_sdk_version
|
ios_sdk_version बिल्ड फ़्लैग यहां दी गई वैल्यू को बदल देगा.
|
default_macos_sdk_version
|
macos_sdk_version बिल्ड फ़्लैग यहां दी गई वैल्यू को बदल देगा.
|
default_tvos_sdk_version
|
tvos_sdk_version बिल्ड फ़्लैग यहां दी गई वैल्यू को बदल देगा.
|
default_watchos_sdk_version
|
watchos_sdk_version बिल्ड फ़्लैग यहां दी गई वैल्यू को बदल देगा.
|
version
|
|