BazelCon 2022 16-17 নভেম্বর নিউ ইয়র্ক এবং অনলাইনে আসছে।
নিবন্ধন আজ!

উদ্দেশ্য-সি নিয়ম

সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।

নিয়ম

j2objc_লাইব্রেরি

j2objc_library(name, deps, compatible_with, deprecation, distribs, entry_classes, features, jre_deps, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

এই নিয়ম J2ObjC ব্যবহার করে জাভা সোর্স ফাইলগুলিকে অবজেক্টিভ-সি-তে অনুবাদ করে, যা তারপরে objc_library এবং objc_binary নিয়মের নির্ভরতা হিসাবে ব্যবহার করা যেতে পারে। J2ObjC সম্পর্কে বিস্তারিত তথ্য J2ObjC সাইটে পাওয়া যাবে

কাস্টম J2ObjC ট্রান্সপিলেশন পতাকা কমান্ড লাইনে বিল্ড পতাকা --j2objc_translation_flags ব্যবহার করে নির্দিষ্ট করা যেতে পারে।

অনুগ্রহ করে মনে রাখবেন যে j2objc_library টার্গেটে অন্তর্ভুক্ত অনুবাদিত ফাইলগুলি ডিফল্ট কম্পাইলেশন কনফিগারেশন ব্যবহার করে কম্পাইল করা হবে, একই কনফিগারেশন যেমন একটি objc_library নিয়মের উত্সগুলির জন্য বৈশিষ্ট্যগুলিতে নির্দিষ্ট কোনো সংকলন বিকল্প নেই।

এছাড়াও, উত্পন্ন কোড টার্গেট লেভেলে ডি-ডুপ্লিকেট করা হয়, সোর্স লেভেলে নয়। আপনার যদি দুটি ভিন্ন জাভা টার্গেট থাকে যা একই জাভা সোর্স ফাইলগুলি অন্তর্ভুক্ত করে, আপনি লিঙ্কের সময় একটি ডুপ্লিকেট প্রতীক ত্রুটি দেখতে পাবেন। এই সমস্যাটি সমাধান করার সঠিক উপায় হল ভাগ করা জাভা সোর্স ফাইলগুলিকে একটি পৃথক সাধারণ লক্ষ্যে স্থানান্তর করা যার উপর নির্ভর করা যেতে পারে।

যুক্তি

গুণাবলী
name

Name ; required

এই লক্ষ্যের জন্য একটি অনন্য নাম।

deps

List of labels ; optional

j2objc_library , java_library , java_import এবং java_proto_library টার্গেটের একটি তালিকা যাতে জাভা ফাইলগুলি অবজেক্টিভ-সি-তে স্থানান্তরিত হয়।

সমস্ত java_library এবং java_import লক্ষ্যমাত্রা যা exports , deps এবং runtime_deps এর মাধ্যমে ট্রানজিটিভভাবে পৌঁছানো যায় সেগুলো অনুবাদ ও সংকলন করা হবে। বর্তমানে জাভা টীকা প্রসেসিং বা java_import টার্গেট দ্বারা উত্পন্ন ফাইলগুলির জন্য কোন srcjar নির্দিষ্ট করা নেই।

J2ObjC অনুবাদটি ট্রানজিটিভ ক্লোজারে অন্তর্ভুক্ত সোর্স জাভা সোর্স ফাইলের ধরনের উপর নির্ভর করে ভিন্নভাবে কাজ করে। srcs এর java_library এ অন্তর্ভুক্ত প্রতিটি .java সোর্স ফাইলের জন্য, একটি সংশ্লিষ্ট .h এবং .m সোর্স ফাইল তৈরি করা হবে। srcs এর java_library বা srcjar এর java_import এ অন্তর্ভুক্ত প্রতিটি সোর্স জার জন্য, সেই জারের সমস্ত কোড সহ একটি সংশ্লিষ্ট .h এবং .m সোর্স ফাইল তৈরি করা হবে।

ব্যবহারকারীরা তাদের কোডে J2ObjC-উত্পন্ন হেডার ফাইলগুলি আমদানি করতে পারে। এই ফাইলগুলির জন্য আমদানি পাথ হল মূল জাভা আর্টিফ্যাক্টের রুট-রিলেটিভ পাথ। উদাহরণস্বরূপ, //some/package/foo.javasome/package/foo.h এর একটি আমদানি পথ রয়েছে এবং //some/package/bar.srcjar এর some/package/bar.h আছে

যদি proto_library নিয়মগুলি এই নিয়মের ট্রানজিটিভ ক্লোজারে থাকে, J2ObjC প্রোটোগুলিও তৈরি করা হবে, কম্পাইল করা হবে এবং বাইনারি স্তরে লিঙ্ক-ইন করা হবে। proto //some/proto/foo.proto এর জন্য, ব্যবহারকারীরা some/proto/foo.j2objc.pb.h আমদানি পাথ ব্যবহার করে জেনারেট করা কোড উল্লেখ করতে পারেন।

entry_classes

List of strings; optional

জাভা ক্লাসের তালিকা যার অনুবাদ করা ObjC প্রতিরূপ ব্যবহারকারীর ObjC কোড দ্বারা সরাসরি উল্লেখ করা হবে। ফ্ল্যাগ --j2objc_dead_code_removal থাকলে এই অ্যাট্রিবিউটের প্রয়োজন হয়। জাভা ক্লাসগুলিকে জাভা ল্যাঙ্গুয়েজ স্পেসিফিকেশন দ্বারা সংজ্ঞায়িত হিসাবে তাদের ক্যানোনিকাল নামে নির্দিষ্ট করা উচিত। যখন ফ্ল্যাগ --j2objc_dead_code_removal নির্দিষ্ট করা হয়, তখন এন্ট্রি ক্লাসের তালিকা ট্রানজিটিভভাবে সংগ্রহ করা হবে এবং ডেড কোড বিশ্লেষণ করার জন্য এন্ট্রি পয়েন্ট হিসেবে ব্যবহার করা হবে। অব্যবহৃত ক্লাস তারপর চূড়ান্ত ObjC অ্যাপ বান্ডেল থেকে সরানো হবে।
jre_deps

List of labels ; optional

এই j2objc_library নিয়ম দ্বারা অনুবাদ করা সমস্ত জাভা কোডের জন্য প্রয়োজনীয় অতিরিক্ত JRE ইমুলেশন লাইব্রেরির তালিকা। শুধুমাত্র মূল 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

Name ; required

এই লক্ষ্যের জন্য একটি অনন্য নাম।

hdrs

List of labels ; optional

এই লাইব্রেরি দ্বারা প্রকাশিত C, C++, অবজেক্টিভ-সি, এবং অবজেক্টিভ-C++ হেডার ফাইলগুলির তালিকা নির্ভরশীল নিয়মে উত্স দ্বারা অন্তর্ভুক্ত করা হবে।

এই শিরোনামগুলি লাইব্রেরির জন্য সর্বজনীন ইন্টারফেস বর্ণনা করে এবং এই নিয়মে বা নির্ভরশীল নিয়মে উত্স দ্বারা অন্তর্ভুক্তির জন্য উপলব্ধ করা হবে৷ এই লাইব্রেরির কোনো ক্লায়েন্টের দ্বারা অন্তর্ভুক্ত করা নয় এমন শিরোনামগুলি পরিবর্তে srcs অ্যাট্রিবিউটে তালিকাভুক্ত করা উচিত।

মডিউল সক্রিয় করা থাকলে এগুলি উৎস থেকে আলাদাভাবে কম্পাইল করা হবে।

Boolean; optional; default is False

যদি 1, এই লাইব্রেরির উপর নির্ভর করে (প্রত্যক্ষ বা পরোক্ষভাবে) যেকোন বান্ডিল বা বাইনারি srcs এবং non_arc_srcs এ তালিকাভুক্ত ফাইলগুলির জন্য সমস্ত অবজেক্ট ফাইলে লিঙ্ক করবে, এমনকি কিছুতে বাইনারি দ্বারা উল্লেখিত কোনও চিহ্ন না থাকলেও। এটি দরকারী যদি আপনার কোডটি বাইনারিতে কোড দ্বারা স্পষ্টভাবে বলা না হয়, যেমন, যদি আপনার কোড কিছু পরিষেবা দ্বারা প্রদত্ত কিছু কলব্যাক গ্রহণ করার জন্য নিবন্ধিত হয়।
archives

List of labels ; required

উদ্দেশ্য-সি লক্ষ্যে প্রদত্ত .a ফাইলগুলির তালিকা যা এই লক্ষ্যের উপর নির্ভর করে।
includes

List of strings; optional

এই টার্গেটে যোগ করার জন্য #include/#import সার্চ পাথের তালিকা এবং সমস্ত নির্ভরশীল লক্ষ্য। এটি তৃতীয় পক্ষ এবং ওপেন-সোর্স লাইব্রেরিগুলিকে সমর্থন করার জন্য যা তাদের #import/#include স্টেটমেন্টে সম্পূর্ণ ওয়ার্কস্পেস পাথ নির্দিষ্ট করে না।

প্যাকেজ ডিরেক্টরির সাপেক্ষে পাথগুলি ব্যাখ্যা করা হয় এবং প্রকৃত ক্লায়েন্ট রুট ছাড়াও genfiles এবং bin roots (যেমন blaze-genfiles/pkg/includedir এবং blaze-out/pkg/includedir ) অন্তর্ভুক্ত করা হয়।

COPTS এর বিপরীতে, এই পতাকাগুলি এই নিয়মের জন্য এবং এর উপর নির্ভর করে এমন প্রতিটি নিয়মের জন্য যোগ করা হয়েছে। (দ্রষ্টব্য: এটি যে নিয়মের উপর নির্ভর করে তা নয়!) খুব সতর্ক থাকুন, কারণ এটি সুদূরপ্রসারী প্রভাব ফেলতে পারে। সন্দেহ হলে, পরিবর্তে COPTS- এ "-iquote" পতাকা যোগ করুন।

sdk_dylibs

List of strings; optional

লিঙ্ক করার জন্য SDK .dylib লাইব্রেরির নাম। উদাহরণস্বরূপ, "libz" বা "libarchive"। "libc++" স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত হয় যদি বাইনারিটির নির্ভরতা ট্রিতে কোনো C++ বা অবজেক্টিভ-C++ উৎস থাকে। একটি বাইনারি লিঙ্ক করার সময়, সেই বাইনারির ট্রানজিটিভ ডিপেন্ডেন্সি গ্রাফে নাম দেওয়া সমস্ত লাইব্রেরি ব্যবহার করা হয়।
sdk_frameworks

List of strings; optional

লিঙ্ক করার জন্য SDK ফ্রেমওয়ার্কের নাম (যেমন "AddressBook", "QuartzCore")। iOS, tvOS এবং watchOS প্ল্যাটফর্মের জন্য তৈরি করার সময় "UIKit" এবং "Foundation" সবসময় অন্তর্ভুক্ত করা হয়। macOS-এর জন্য, শুধুমাত্র "ফাউন্ডেশন" সবসময় অন্তর্ভুক্ত থাকে।

একটি শীর্ষ স্তরের Apple বাইনারি লিঙ্ক করার সময়, সেই বাইনারির ট্রানজিটিভ নির্ভরতা গ্রাফে তালিকাভুক্ত সমস্ত SDK ফ্রেমওয়ার্ক লিঙ্ক করা হয়।

sdk_includes

List of strings; optional

এই টার্গেটে যোগ করার জন্য #include/#import সার্চ পাথের তালিকা এবং সমস্ত নির্ভরশীল লক্ষ্য, যেখানে প্রতিটি পাথ $(SDKROOT)/usr/include এর সাথে আপেক্ষিক।
textual_hdrs

List of labels ; optional

C, C++, Objective-C, এবং Objective-C++ ফাইলগুলির তালিকা যা এই নিয়মে বা এই লাইব্রেরির ব্যবহারকারীদের দ্বারা উৎস ফাইল দ্বারা শিরোনাম হিসাবে অন্তর্ভুক্ত করা হয়েছে। hdrs এর বিপরীতে, এগুলি উৎস থেকে আলাদাভাবে সংকলিত হবে না।
weak_sdk_frameworks

List of strings; optional

দুর্বলভাবে লিঙ্ক করার জন্য SDK ফ্রেমওয়ার্কের নাম। উদাহরণস্বরূপ, "মিডিয়া অ্যাক্সেসিবিলিটি"। নিয়মিত লিঙ্ক করা SDK ফ্রেমওয়ার্কের পার্থক্যে, দুর্বলভাবে লিঙ্ক করা ফ্রেমওয়ার্ক থেকে চিহ্নগুলি রানটাইমে উপস্থিত না থাকলে কোনও ত্রুটি সৃষ্টি করে না।

objc_লাইব্রেরি

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)

এই নিয়মটি প্রদত্ত অবজেক্টিভ-সি সোর্স ফাইল থেকে একটি স্ট্যাটিক লাইব্রেরি তৈরি করে।

যুক্তি

গুণাবলী
name

Name ; required

এই লক্ষ্যের জন্য একটি অনন্য নাম।

deps

List of labels ; optional

চূড়ান্ত বান্ডিল গঠনের জন্য একত্রে সংযুক্ত করা লক্ষ্যগুলির তালিকা।
srcs

List of labels ; optional

সি, সি++, অবজেক্টিভ-সি, এবং অবজেক্টিভ-সি++ সোর্স এবং হেডার ফাইল, এবং/অথবা (`.s`, `.S`, বা `.asm`) অ্যাসেম্বলি সোর্স ফাইলের তালিকা, যা তৈরি করতে প্রক্রিয়া করা হয় লাইব্রেরি টার্গেট। এগুলি হল আপনার চেক-ইন করা ফাইল, এবং যেকোনও জেনারেট করা ফাইল৷ সোর্স ফাইলগুলিকে .o ফাইলে কম্পাইল করা হয় ঝনঝন করে। হেডার ফাইল এই টার্গেটের srcs অ্যাট্রিবিউটে যেকোন সোর্স বা হেডার দ্বারা অন্তর্ভুক্ত/আমদানি করা হতে পারে, কিন্তু hdrs-এ হেডার বা এই নিয়মের উপর নির্ভর করে এমন কোনও টার্গেট দ্বারা নয়। উপরন্তু, precompiled .o ফাইল srcs হিসাবে দেওয়া যেতে পারে. অনুপস্থিত প্রতীক লিঙ্কার ত্রুটি এড়াতে প্রদত্ত .o ফাইল এবং বিল্ডের আর্কিটেকচারে সামঞ্জস্যতা নিশ্চিত করতে সতর্ক থাকুন।
hdrs

List of labels ; optional

এই লাইব্রেরি দ্বারা প্রকাশিত C, C++, অবজেক্টিভ-সি, এবং অবজেক্টিভ-C++ হেডার ফাইলগুলির তালিকা নির্ভরশীল নিয়মে উত্স দ্বারা অন্তর্ভুক্ত করা হবে।

এই শিরোনামগুলি লাইব্রেরির জন্য সর্বজনীন ইন্টারফেস বর্ণনা করে এবং এই নিয়মে বা নির্ভরশীল নিয়মে উত্স দ্বারা অন্তর্ভুক্তির জন্য উপলব্ধ করা হবে৷ এই লাইব্রেরির কোনো ক্লায়েন্টের দ্বারা অন্তর্ভুক্ত করা নয় এমন শিরোনামগুলি পরিবর্তে srcs অ্যাট্রিবিউটে তালিকাভুক্ত করা উচিত।

মডিউল সক্রিয় করা থাকলে এগুলি উৎস থেকে আলাদাভাবে কম্পাইল করা হবে।

Boolean; optional; default is False

যদি 1, এই লাইব্রেরির উপর নির্ভর করে (প্রত্যক্ষ বা পরোক্ষভাবে) যেকোন বান্ডিল বা বাইনারি srcs এবং non_arc_srcs এ তালিকাভুক্ত ফাইলগুলির জন্য সমস্ত অবজেক্ট ফাইলে লিঙ্ক করবে, এমনকি কিছুতে বাইনারি দ্বারা উল্লেখিত কোনও চিহ্ন না থাকলেও। এটি দরকারী যদি আপনার কোডটি বাইনারিতে কোড দ্বারা স্পষ্টভাবে বলা না হয়, যেমন, যদি আপনার কোড কিছু পরিষেবা দ্বারা প্রদত্ত কিছু কলব্যাক গ্রহণ করার জন্য নিবন্ধিত হয়।
copts

List of strings; optional

কম্পাইলার পাস করার জন্য অতিরিক্ত পতাকা। "ভেরিয়েবল তৈরি করুন" প্রতিস্থাপন এবং বোর্ন শেল টোকেনাইজেশন সাপেক্ষে। এই পতাকাগুলি শুধুমাত্র এই লক্ষ্যমাত্রার জন্য প্রযোজ্য হবে, এবং যার উপর এটি নির্ভর করে বা এটির উপর নির্ভর করে তাদের নয়।

মনে রাখবেন যে জেনারেট করা এক্সকোড প্রোজেক্টের জন্য, কপ্টে "-I" পতাকা ব্যবহার করে নির্দিষ্ট করা ডিরেক্টরি পাথগুলিকে পার্স করা হয়, "$(WORKSPACE_ROOT)/" দিয়ে প্রিপেন্ড করা হয় যদি সেগুলি আপেক্ষিক পাথ হয় এবং সংশ্লিষ্ট Xcode টার্গেটের জন্য হেডার সার্চ পাথগুলিতে যোগ করা হয়। .

defines

List of strings; optional

কম্পাইলার পাস করার জন্য অতিরিক্ত -D পতাকা। সেগুলি KEY=VALUE বা সহজভাবে KEY আকারে হওয়া উচিত এবং শুধুমাত্র এই টার্গেটের জন্য কম্পাইলারের কাছেই নয় (যেমন copts রয়েছে) কিন্তু এই লক্ষ্যের সমস্ত objc_ নির্ভরশীলদের কাছেও পাঠানো হয়। "ভেরিয়েবল তৈরি করুন" প্রতিস্থাপন এবং বোর্ন শেল টোকেনাইজেশন সাপেক্ষে।
enable_modules

Boolean; optional; default is False

ক্ল্যাং মডিউল সমর্থন সক্ষম করে (-fmodules এর মাধ্যমে)। এটিকে 1-এ সেট করা আপনাকে @ইম্পোর্ট সিস্টেম হেডার এবং অন্যান্য লক্ষ্যগুলিকে অনুমতি দেবে: @import UIKit; @import path_to_package_target;
includes

List of strings; optional

এই টার্গেটে যোগ করার জন্য #include/#import সার্চ পাথের তালিকা এবং সমস্ত নির্ভরশীল লক্ষ্য। এটি তৃতীয় পক্ষ এবং ওপেন-সোর্স লাইব্রেরিগুলিকে সমর্থন করার জন্য যা তাদের #import/#include স্টেটমেন্টে সম্পূর্ণ ওয়ার্কস্পেস পাথ নির্দিষ্ট করে না।

প্যাকেজ ডিরেক্টরির সাপেক্ষে পাথগুলি ব্যাখ্যা করা হয় এবং প্রকৃত ক্লায়েন্ট রুট ছাড়াও genfiles এবং bin roots (যেমন blaze-genfiles/pkg/includedir এবং blaze-out/pkg/includedir ) অন্তর্ভুক্ত করা হয়।

COPTS এর বিপরীতে, এই পতাকাগুলি এই নিয়মের জন্য এবং এর উপর নির্ভর করে এমন প্রতিটি নিয়মের জন্য যোগ করা হয়েছে। (দ্রষ্টব্য: এটি যে নিয়মের উপর নির্ভর করে তা নয়!) খুব সতর্ক থাকুন, কারণ এটি সুদূরপ্রসারী প্রভাব ফেলতে পারে। সন্দেহ হলে, পরিবর্তে COPTS- এ "-iquote" পতাকা যোগ করুন।

linkopts

List of strings; optional

লিঙ্কারে পাস করার জন্য অতিরিক্ত পতাকা।
module_map

Label ; optional

এই লক্ষ্যের জন্য একটি কাস্টম ঝনঝন মডিউল মানচিত্র। একটি কাস্টম মডিউল মানচিত্র ব্যবহার নিরুৎসাহিত করা হয়. বেশিরভাগ ব্যবহারকারীরই Bazel দ্বারা উত্পন্ন মডিউল মানচিত্র ব্যবহার করা উচিত। যদি নির্দিষ্ট করা থাকে, Bazel এই লক্ষ্যের জন্য একটি মডিউল মানচিত্র তৈরি করবে না, তবে প্রদত্ত মডিউল মানচিত্রটি কম্পাইলারকে প্রেরণ করবে।
module_name

String; optional

এই লক্ষ্যের জন্য মডিউল নাম সেট করে। ডিফল্টরূপে মডিউলের নাম হল লক্ষ্য পথ, যেখানে _ দ্বারা প্রতিস্থাপিত সমস্ত বিশেষ চিহ্ন রয়েছে, যেমন //foo/baz:bar foo_baz_bar হিসাবে আমদানি করা যেতে পারে।
non_arc_srcs

List of labels ; optional

অবজেক্টিভ-সি ফাইলগুলির তালিকা যা লাইব্রেরি টার্গেট তৈরি করতে প্রক্রিয়া করা হয় যা ARC ব্যবহার করে না। এই অ্যাট্রিবিউটের ফাইলগুলিকে srcs অ্যাট্রিবিউটের মতোই বিবেচনা করা হয়, কিন্তু ARC সক্ষম না করেই কম্পাইল করা হয়।
pch

Label ; optional

কম্পাইল করা প্রতিটি সোর্স ফাইলে প্রিপেন্ড করার জন্য হেডার ফাইল (আর্ক এবং নন-আর্ক উভয়ই)। BUILD ফাইলগুলিতে pch ফাইলের ব্যবহার সক্রিয়ভাবে নিরুৎসাহিত করা হয়, এবং এটিকে অবমূল্যায়ন বলে বিবেচনা করা উচিত। যেহেতু pch ফাইলগুলি আসলে প্রি-কম্পাইল করা হয় না এটি একটি বিল্ড-স্পীড বর্ধিতকরণ নয় এবং পরিবর্তে শুধুমাত্র একটি বিশ্বব্যাপী নির্ভরতা। বিল্ড দক্ষতার দৃষ্টিকোণ থেকে আপনি আসলেই আরও ভাল আপনার সোর্স যেখানে আপনার প্রয়োজন সেখানে আপনার যা প্রয়োজন তা অন্তর্ভুক্ত করে।
runtime_deps

List of labels ; optional

ফ্রেমওয়ার্ক টার্গেটের তালিকা যা রানটাইমে দেরিতে লোড হয়। এগুলি অ্যাপ বান্ডেলে অন্তর্ভুক্ত করা হয়েছে কিন্তু বিল্ড টাইমে লিঙ্ক করা হয়নি।
sdk_dylibs

List of strings; optional

লিঙ্ক করার জন্য SDK .dylib লাইব্রেরির নাম। উদাহরণস্বরূপ, "libz" বা "libarchive"। "libc++" স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত হয় যদি বাইনারিটির নির্ভরতা ট্রিতে কোনো C++ বা অবজেক্টিভ-C++ উৎস থাকে। একটি বাইনারি লিঙ্ক করার সময়, সেই বাইনারির ট্রানজিটিভ ডিপেন্ডেন্সি গ্রাফে নাম দেওয়া সমস্ত লাইব্রেরি ব্যবহার করা হয়।
sdk_frameworks

List of strings; optional

লিঙ্ক করার জন্য SDK ফ্রেমওয়ার্কের নাম (যেমন "AddressBook", "QuartzCore")। iOS, tvOS এবং watchOS প্ল্যাটফর্মের জন্য তৈরি করার সময় "UIKit" এবং "Foundation" সবসময় অন্তর্ভুক্ত করা হয়। macOS-এর জন্য, শুধুমাত্র "ফাউন্ডেশন" সবসময় অন্তর্ভুক্ত থাকে।

একটি শীর্ষ স্তরের Apple বাইনারি লিঙ্ক করার সময়, সেই বাইনারির ট্রানজিটিভ নির্ভরতা গ্রাফে তালিকাভুক্ত সমস্ত SDK ফ্রেমওয়ার্ক লিঙ্ক করা হয়।

sdk_includes

List of strings; optional

এই টার্গেটে যোগ করার জন্য #include/#import সার্চ পাথের তালিকা এবং সমস্ত নির্ভরশীল লক্ষ্য, যেখানে প্রতিটি পাথ $(SDKROOT)/usr/include এর সাথে আপেক্ষিক।
textual_hdrs

List of labels ; optional

C, C++, Objective-C, এবং Objective-C++ ফাইলগুলির তালিকা যা এই নিয়মে বা এই লাইব্রেরির ব্যবহারকারীদের দ্বারা উৎস ফাইল দ্বারা শিরোনাম হিসাবে অন্তর্ভুক্ত করা হয়েছে। hdrs এর বিপরীতে, এগুলি উৎস থেকে আলাদাভাবে সংকলিত হবে না।
weak_sdk_frameworks

List of strings; optional

দুর্বলভাবে লিঙ্ক করার জন্য SDK ফ্রেমওয়ার্কের নাম। উদাহরণস্বরূপ, "মিডিয়া অ্যাক্সেসিবিলিটি"। নিয়মিত লিঙ্ক করা SDK ফ্রেমওয়ার্কের পার্থক্যে, দুর্বলভাবে লিঙ্ক করা ফ্রেমওয়ার্ক থেকে চিহ্নগুলি রানটাইমে উপস্থিত না থাকলে কোনও ত্রুটি সৃষ্টি করে না।

উপলব্ধ_এক্সকোড

available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)

এই নিয়মের দুটি লক্ষ্য দূরবর্তী এবং স্থানীয়ভাবে উপলব্ধ xcode সংস্করণগুলি নির্দেশ করার জন্য একটি xcode_config নিয়ম উদাহরণ দ্বারা নির্ভর করা যেতে পারে। এটি সম্মিলিতভাবে উপলব্ধ xcodes থেকে একটি অফিসিয়াল xcode সংস্করণ নির্বাচন করার অনুমতি দেয়।

যুক্তি

গুণাবলী
name

Name ; required

এই লক্ষ্যের জন্য একটি অনন্য নাম।

default

Label ; required; nonconfigurable

এই প্ল্যাটফর্মের জন্য ডিফল্ট xcode সংস্করণ।
versions

List of labels ; optional; nonconfigurable

এই প্ল্যাটফর্মে উপলব্ধ xcode সংস্করণ.

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

Name ; required

এই লক্ষ্যের জন্য একটি অনন্য নাম।

default

Label ; optional; nonconfigurable

ব্যবহার করার জন্য xcode-এর ডিফল্ট অফিসিয়াল সংস্করণ। কোন xcode_version বিল্ড পতাকা নির্দিষ্ট না থাকলে প্রদত্ত xcode_version টার্গেট দ্বারা নির্দিষ্ট সংস্করণটি ব্যবহার করা হবে। কোনো versions সেট করা থাকলে এটি প্রয়োজন। যদি remote_versions বা local_versions সেট করা থাকে তাহলে এটি সেট করা যাবে না।
local_versions

Label ; optional; nonconfigurable

xcode_version targets that are available locally. These are used along with local_versions to select a mutually available version. This may not be set if versions is set.
remote_versions

Label ; optional; nonconfigurable

xcode_version targets that are available remotely. These are used along with remote_versions to select a mutually available version. This may not be set if versions is set.
versions

List of labels ; optional; nonconfigurable

গৃহীত xcode_version targets that may be used. If the value of the xcode_version build flag matches one of the aliases or version number of any of the given xcode_version targets, the matching target will be used. This may not be set if remote_versions or local_versions is set.

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_config নিয়ম দেখুন।

যুক্তি

গুণাবলী
name

Name ; required

এই লক্ষ্যের জন্য একটি অনন্য নাম।

default_ios_sdk_version

String; optional; nonconfigurable

ios sdk সংস্করণ যা ডিফল্টরূপে ব্যবহৃত হয় যখন xcode-এর এই সংস্করণটি ব্যবহার করা হচ্ছে। ios_sdk_version বিল্ড পতাকা এখানে উল্লেখিত মানকে ওভাররাইড করবে।
default_macos_sdk_version

String; optional; nonconfigurable

macosx sdk সংস্করণ যা ডিফল্টরূপে ব্যবহৃত হয় যখন xcode-এর এই সংস্করণটি ব্যবহার করা হচ্ছে। macos_sdk_version বিল্ড পতাকা এখানে উল্লিখিত মান ওভাররাইড করবে।
default_tvos_sdk_version

String; optional; nonconfigurable

tvos sdk সংস্করণ যা ডিফল্টরূপে ব্যবহৃত হয় যখন xcode-এর এই সংস্করণটি ব্যবহার করা হচ্ছে। tvos_sdk_version বিল্ড পতাকা এখানে উল্লেখিত মানকে ওভাররাইড করবে।
default_watchos_sdk_version

String; optional; nonconfigurable

watchos sdk সংস্করণ যা ডিফল্টরূপে ব্যবহৃত হয় যখন xcode-এর এই সংস্করণটি ব্যবহার করা হচ্ছে। watchos_sdk_version বিল্ড পতাকা এখানে উল্লেখিত মানকে ওভাররাইড করবে।
version

String; required; nonconfigurable

Xcode-এর একটি সংস্করণের অফিসিয়াল সংস্করণ নম্বর।