नियम
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 ट्रांसपाइलेशन फ़्लैग के बारे में, कमांड लाइन में बिल्ड फ़्लैग
--j2objc_translation_flags
का इस्तेमाल करके बताया जा सकता है.
कृपया ध्यान दें कि किसी 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 प्रोटो भी जनरेट होंगे, उन्हें इकट्ठा किया जाएगा, और बाइनरी लेवल पर लिंक किया जाएगा. |
entry_classes
|
--j2objc_dead_code_removal
का फ़्लैग चालू है, तो यह एट्रिब्यूट ज़रूरी है. Java की क्लास को उनके नाम में बताया जाना चाहिए, जैसा कि Java की खास बातों में बताया गया है.
अगर फ़्लैग --j2objc_dead_code_removal बताया जाता है, तो एंट्री क्लास की सूची समय के साथ इकट्ठा की जाएगी. साथ ही, इस्तेमाल किए जा रहे कोड को पूरा करने के लिए, एंट्री पॉइंट के तौर पर इसका इस्तेमाल किया जाएगा.
इस्तेमाल नहीं की गई क्लास को ObjC ऐप्लिकेशन बंडल से हटा दिया जाएगा.
|
jre_deps
|
j2objc_library नियम के हिसाब से अनुवाद किए गए सभी Java कोड के लिए ज़रूरी है. सिर्फ़ मुख्य 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, 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
|
|
sdk_dylibs
|
|
sdk_frameworks
|
टॉप लेवल की Apple बाइनरी को लिंक करते समय, उस बाइनरी के ट्रांज़िटिव डिपेंडेंसी ग्राफ़ में दिए गए सभी SDK फ़्रेमवर्क लिंक होते हैं. |
sdk_includes
|
#include/#import खोज पाथ और टारगेट के आधार पर सभी पाथ. यहां हर पाथ $(SDKROOT)/usr/include के हिसाब से होता है.
|
textual_hdrs
|
|
weak_sdk_frameworks
|
|
उपलब्ध_xकोड
नियम का सोर्स देखेंavailable_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)
इस नियम के दो टारगेट, xcode_config
नियम के इंस्टेंस पर निर्भर हो सकते हैं. ये टारगेट, रिमोट तरीके से और स्थानीय तौर पर उपलब्ध xcode के वर्शन के बारे में बताने के लिए करते हैं.
इससे, सभी उपलब्ध 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
|
|