+1 এর জন্য, "অনেকগুলি এবং তারা ভয়ঙ্কর।"
তবে, "ধনীতম" এবং "সর্বাধিক স্কেলেবল" সম্ভবত সিএমকে , এটি একটি মেকফিল -জেনারেটর (এছাড়াও স্থানীয় এমএসভিসি ++ *.proj
/ জেনারেট করে *.sln
)। অদ্ভুত বাক্য গঠন, তবে একবার এটি শিখলে, এটি আপনাকে বিভিন্ন প্ল্যাটফর্মের জন্য সুন্দরভাবে বিল্ড তৈরি করতে দেয়। আমি যদি "স্টার্ট-ফ্রেশ" হয়ে থাকি তবে আমি সম্ভবত ব্যবহার করতাম CMake
। এটি আপনার তালিকাটি পরিচালনা করতে পারে, যদিও আপনার "কোড-প্রজন্ম" আপনি কী করতে চান তার উপর নির্ভর করে বিল্ড সিস্টেমের বাইরে "নিজের জীবনযাত্রা" নিতে পারে। (নিচে দেখ.)
সাধারণ প্রকল্পগুলির জন্য, কিউমেক জেনারেটরটি ঠিক আছে ( কিউমেক ব্যবহারের জন্য আপনাকে কিউটি লাইব্রেরি ব্যবহার করার দরকার নেই)। তবে, আপনি "সরল" - কোড উত্পন্নকরণ এবং "অতিরিক্ত-পর্যায়সমূহ" এর বর্ণনা দিচ্ছেন না এর অর্থ সম্ভবত CMake
আপনার নিজের এক্সটেনশনের জন্য সমৃদ্ধ এপিআই সহ কিছু Scons
বা ( যেমন Waf
) চান।
আমরা কর্মক্ষেত্রে স্ক্যান ব্যবহার করি । এটি "বুলেট-প্রুফ-বিল্ডস" তৈরি করে তবে এটি সত্যিই ধীর। অন্য কোনও সিস্টেমের মতো বুলেট-প্রুফ হবে না Scons
। কিন্তু, এটি ধীর। এটি পাইথনে লেখা হয়েছে এবং আমরা আমাদের "ওয়ার্কস্পেস-অর্গানাইজেশন" (যেখানে আমরা কেবলমাত্র মডিউল নির্ভরতা নির্দিষ্ট করি) এর জন্য ইন্টারফেসটি প্রসারিত করেছি এবং এটি Scons
ডিজাইনের অভিপ্রায় (পাইথনের মাধ্যমে এই ধরণের এক্সটেনশন) এর অংশ। সুবিধাজনক, তবে বিল্ডগুলি ধীর। আপনি বুলেট-প্রুফ বিল্ডগুলি পান (যে কোনও বিকাশকারী বাক্স চূড়ান্ত প্রকাশ করতে পারে), তবে এটি ধীর গতির। এবং, এটি ধীর। ভুলে যাবেন না আপনি যদি Scons
এটি ব্যবহার করেন তবে এটি ধীর। এবং, এটি ধীর।
2000 বছরের এক দশক পরেও আমাদের কাছে উড়ন্ত গাড়ি নেই তা ভাবতে আমার অসুস্থ হয়ে পড়ে। সেগুলি পেতে আমাদের সম্ভবত আরও কয়েকশ বছর বা কিছু অপেক্ষা করতে হবে। এবং, আমরা তখন সমস্ত সম্ভবত আমাদের উড়ন্ত গাড়িগুলির চারপাশে উড়ে যাব যা এখনও ক্রেপি বিল্ড সিস্টেমের সাহায্যে নির্মিত হচ্ছে।
হ্যাঁ, তারা সব ভয়ঙ্কর।
[কোড জেনারেশন সম্পর্কে]
Scons
"পর্যায়ক্রমে" কাজ করে এবং তারা "কিছুটা স্থিতিশীল"। এটি বিল্ডের অংশ হিসাবে উত্পন্ন কোডটি তৈরি করতে পারে (লোকেরা এটি বিভিন্ন উপায়ে কয়েকজন করে করছেন) তবে এটি "খুব স্ক্রিন-জাতীয় কিছু" হিসাবে বর্ণিত হয়েছে।
যদি এটি সাধারণ "কিছু ফাইল প্রাকপ্রসেস করুন এবং উত্স ফাইলগুলি উত্পন্ন করুন", তবে কোনও বিগী নেই (আপনার কাছে প্রচুর বিকল্প রয়েছে এবং এই কারণেই qmake
লিখিত ছিল - ফাইলগুলির moc
প্রিপ্রোসেসিংয়ের জন্য *.hpp/*.cpp
)।
তবে, আপনি যদি এটি "ভারী পদ্ধতিতে" করছেন, আপনার নিজের স্ক্রিপ্ট করা দরকার। উদাহরণস্বরূপ, আমাদের মধ্যে বিল্ড-এর-অ-অংশ-হিসাবে তৈরি স্ক্রিপ্ট রয়েছে যা ডাটাবেসগুলি অনুসন্ধান করে এবং "স্তর" (traditionalতিহ্যগত 3-স্তরের অ্যাপ্লিকেশন বিকাশে) এর মধ্যে ইন্টারফেসে সি ++ ক্লাস তৈরি করে। একইভাবে, আমরা আইডিএলগুলির মাধ্যমে সার্ভার / ক্লায়েন্ট উত্স কোড এবং একাধিক ক্লায়েন্ট / সার্ভারকে বিভিন্ন সংস্করণ (একই "ক্লায়েন্ট" বা "সার্ভার" এর জন্য) এক সাথে চলার অনুমতি দেওয়ার জন্য এম্বেড করা সংস্করণ তথ্য তৈরি করেছি। উত্পন্ন উত্স কোড প্রচুর। আমরা এটি "দ্য বিল্ড-সিস্টেম" "ভান" করতে পারতাম, তবে সত্যই এটি "কনফিগারেশন ম্যানেজমেন্ট" এর একটি অ-তুচ্ছ-অবকাঠামো, যার অংশটি "বিল্ড-সিস্টেম" is উদাহরণস্বরূপ, এই সিস্টেমটি, "টেক-ডাউন" এবং "