আমি মনে করি তিন চাবি আইটেম আপনি প্রকল্পের গঠন সংক্রান্ত বুঝতে প্রয়োজন আছে: লক্ষ্যগুলি , প্রকল্প , এবং ওয়ার্কস্পেস । লক্ষ্যগুলি কীভাবে একটি পণ্য / বাইনারি (অর্থাত্ একটি অ্যাপ্লিকেশন বা গ্রন্থাগার) তৈরি হয় তা বিশদে নির্দিষ্ট করে। এগুলির মধ্যে বিল্ড সেটিংস অন্তর্ভুক্ত রয়েছে, যেমন সংকলক এবং লিঙ্কার পতাকা, এবং এগুলি সংজ্ঞায়িত করে যে কোন ফাইলগুলি (উত্স কোড এবং সংস্থানগুলি) আসলে কোনও পণ্যের সাথে সম্পর্কিত। আপনি যখন বিল্ড / রান করেন, আপনি সর্বদা একটি নির্দিষ্ট লক্ষ্য নির্বাচন করেন।
সম্ভবত আপনার কয়েকটি টার্গেট রয়েছে যা কোড এবং সংস্থানগুলি ভাগ করে। এই বিভিন্ন লক্ষ্যবস্তু কোনও অ্যাপ্লিকেশনটির সামান্য বিভিন্ন সংস্করণ (আইপ্যাড / আইফোন, বিভিন্ন ব্র্যান্ডিংস,…) হতে পারে বা পরীক্ষার কেসগুলির জন্য যা প্রাকৃতিকভাবে অ্যাপ্লিকেশন হিসাবে একই উত্স ফাইলগুলিতে অ্যাক্সেস করতে হবে। এই সমস্ত সম্পর্কিত লক্ষ্যগুলি একটি প্রকল্পে গোষ্ঠীভুক্ত করা যেতে পারে । প্রকল্পে তার সমস্ত লক্ষ্যগুলি থেকে ফাইলগুলি থাকা অবস্থায়, প্রতিটি লক্ষ্য প্রাসঙ্গিক ফাইলগুলির নিজস্ব উপসেটটি বাছাই করে। বিল্ড সেটিংসের ক্ষেত্রেও এটি একই রকম হয়: আপনি প্রকল্পে ডিফল্ট প্রকল্প-প্রশস্ত সেটিংস সংজ্ঞায়িত করতে পারেন, তবে আপনার লক্ষ্যগুলির মধ্যে একটির যদি বিভিন্ন সেটিংসের প্রয়োজন হয় তবে আপনি সর্বদা সেগুলিকে ওভাররাইড করতে পারেন:
ভাগ করা প্রকল্প সেটিংস যা সমস্ত লক্ষ্যবস্তু উত্তরাধিকার সূত্রে ওভাররাইড না করে inherit
কংক্রিট টার্গেট সেটিংস: পিএসই আইফোন প্রকল্পের Base SDK
সেটিংকে ওভাররাইড করে
এক্সকোডে আপনি সর্বদা প্রকল্পগুলি খুলুন (বা ওয়ার্কস্পেসগুলি, তবে লক্ষ্যগুলি নয়) এবং এতে থাকা সমস্ত লক্ষ্যগুলি নির্মিত / চালানো যেতে পারে তবে কোনও প্রকল্পের নির্মাণের কোনও উপায় / সংজ্ঞা নেই, তাই প্রতিটি প্রকল্পের জন্য কমপক্ষে একটি লক্ষ্য প্রয়োজন to কেবলমাত্র ফাইল এবং সেটিংসের সংগ্রহের চেয়ে বেশি হন।
চালানোর জন্য প্রকল্পের লক্ষ্যগুলির মধ্যে একটি নির্বাচন করুন
অনেক ক্ষেত্রে, প্রকল্পগুলি আপনার প্রয়োজন। আপনি যদি উত্স থেকে গড়ে তোলেন এমন নির্ভরতা থাকে তবে আপনি এটিকে একটি সাবপ্রজেক্ট হিসাবে এম্বেড করতে পারেন । সাবপ্রজেক্টগুলি পৃথকভাবে বা তাদের সুপার প্রকল্পের মধ্যে খোলা যেতে পারে।
ডেমোলিব একটি সাবপ্রজেক্ট
আপনি যদি সুপার প্রকল্পের নির্ভরতার সাথে সাবপ্রজেক্টের লক্ষ্যগুলির মধ্যে একটি যোগ করেন তবে সাবপ্রজেক্টটি অপরিবর্তিত না থাকলে স্বয়ংক্রিয়ভাবে নির্মিত হবে। এখানে সুবিধাটি হ'ল আপনি একই প্রকল্পের কোড এবং আপনার নির্ভরতা একই এক্সকোড উইন্ডোতে ফাইল সম্পাদনা করতে পারবেন এবং আপনি যখন নির্মাণ / চালাবেন তখন আপনি প্রকল্পের এবং এর সাব-প্রকল্পগুলির লক্ষ্যগুলি থেকে নির্বাচন করতে পারেন:
তবে, যদি আপনার গ্রন্থাগারটি (সাবপ্রজেক্ট) বিভিন্ন অন্যান্য প্রকল্পের (বা তাদের লক্ষ্যগুলি, সুনির্দিষ্টভাবে বোঝার জন্য) দ্বারা ব্যবহৃত হয়, তবে এটি একই শ্রেণিবিন্যাসের স্তরে রেখে দেওয়া বোধগম্য হয় - যা ওয়ার্কস্পেসের জন্য। ওয়ার্কস্পেসগুলি প্রকল্পগুলি ধারণ করে এবং পরিচালনা করে এবং এতে সরাসরি যুক্ত সমস্ত প্রকল্প (যেমন তাদের সাবপ্রজেক্ট নয়) একই স্তরে থাকে এবং তাদের লক্ষ্যগুলি একে অপরের উপর নির্ভর করতে পারে (প্রকল্পগুলির লক্ষ্যগুলি সাবপ্রজেক্টের লক্ষ্যগুলিতে নির্ভর করতে পারে তবে বিপরীতে নয়)।
কর্মক্ষেত্রের কাঠামো
এই উদাহরণে, উভয় অ্যাপ্লিকেশন ( অন্য অ্যাপ্লিকেশন / প্রকল্পের কাঠামো উদাহরণ ) ডেমোলিব প্রকল্পের লক্ষ্যগুলি উল্লেখ করতে পারে । এটি অন্য দুটি প্রকল্পের ডেমোলিব প্রকল্পকে একটি সাবপ্রজেক্ট হিসাবে অন্তর্ভুক্ত করেও সম্ভব হবে (যা কেবলমাত্র একটি রেফারেন্স, সুতরাং কোনও সদৃশ প্রয়োজন নেই), তবে যদি আপনার প্রচুর ক্রস-নির্ভরতা থাকে, তবে ওয়ার্কস্পেসগুলি আরও বোধগম্য হয়। আপনি যদি একটি কর্মক্ষেত্র খুলেন, আপনি বিল্ডিং / চলাকালীন সমস্ত প্রকল্পের লক্ষ্যগুলি থেকে চয়ন করতে পারেন।
আপনি এখনও আপনার প্রকল্প ফাইলগুলি আলাদাভাবে খুলতে পারেন, তবে সম্ভবত তাদের লক্ষ্যগুলি তৈরি হবে না কারণ আপনি ওয়ার্কস্পেস ফাইলটি না খুললে এক্সকোড নির্ভরতাগুলি সমাধান করতে পারে না। ওয়ার্কস্পেসগুলি আপনাকে সাবপ্রজেক্টগুলির মতো একই সুবিধা দেয়: একবার নির্ভরতা পরিবর্তিত হয়ে গেলে, এটি আপ-টু-ডেট হয়েছে তা নিশ্চিত করার জন্য Xcode এটি পুনর্নির্মাণ করবে (যদিও এর সাথে আমার কিছু সমস্যা হয়েছে, এটি নির্ভরযোগ্যভাবে কাজ করছে বলে মনে হয় না)।
সংক্ষেপে আপনার প্রশ্নগুলি :
1) প্রকল্পগুলিতে ফাইল (কোড / রিসোজেস), সেটিংস এবং লক্ষ্যগুলি থাকে যা সেই ফাইলগুলি এবং সেটিংস থেকে পণ্য তৈরি করে। ওয়ার্কস্পেসগুলিতে এমন প্রকল্প রয়েছে যা একে অপরকে রেফারেন্স করতে পারে।
2) উভয়ই আপনার সামগ্রিক প্রকল্পের কাঠামোর জন্য দায়ী, তবে বিভিন্ন স্তরে।
3) আমি মনে করি প্রকল্পগুলি বেশিরভাগ ক্ষেত্রেই যথেষ্ট। নির্দিষ্ট কারণ না থাকলে ওয়ার্কস্পেস ব্যবহার করবেন না। এছাড়াও, আপনি আপনার প্রকল্পটি সর্বদা কোনও কর্মক্ষেত্রে এম্বেড করতে পারেন।
4) আমি মনে করি উপরের পাঠ্যটি এর জন্য…
3 এর জন্য একটি মন্তব্য রয়েছে: কোকোপডস , যা স্বয়ংক্রিয়ভাবে আপনার জন্য তৃতীয় পক্ষের গ্রন্থাগারগুলি পরিচালনা করে, ওয়ার্কস্পেস ব্যবহার করে। অতএব, আপনি এগুলি ব্যবহার করতে হবে যখন আপনি ব্যবহার করবেন CocoaPods
(যা অনেক লোকই ব্যবহার করে)।