সিএমকে সোর্সফাইলে নির্দিষ্ট করার সর্বোত্তম উপায় হ'ল তাদের স্পষ্টভাবে তালিকাভুক্ত করা ।
সিএমকের নির্মাতারা নিজে গ্লোববিং ব্যবহার না করার পরামর্শ দেন।
দেখুন: https://cmake.org/cmake/help/v3.15/command/file.html?hightlight=glob#file
(আমরা আপনার উত্স ট্রি থেকে উত্স ফাইলগুলির একটি তালিকা সংগ্রহের জন্য জিএলওবি ব্যবহার করার পরামর্শ দিচ্ছি না a যদি কোনও উত্স যুক্ত করা বা অপসারণের সময় কোনও সিএমকেলিস্ট.টেক্সট ফাইল পরিবর্তন না করে তবে জেনারেট বিল্ড সিস্টেমটি সিএমকে কখন পুনরায় জেনারেট করতে বলবে তা জানতে পারে না))
অবশ্যই, আপনি ডাউনসাইডগুলি কী তা জানতে চাইতে পারেন - পড়ুন!
গ্লোববিং ব্যর্থ হলে:
গ্লোব্বিংয়ের বড় অসুবিধা হ'ল ফাইলগুলি তৈরি / মুছলে বিল্ট-সিস্টেমটি স্বয়ংক্রিয়ভাবে আপডেট হয় না।
আপনি যদি সেই ব্যক্তি ফাইল যুক্ত করেন তবে এটি গ্রহণযোগ্য ট্রেড অফ হিসাবে মনে হতে পারে, তবে এটি আপনার কোড তৈরি করা অন্যান্য ব্যক্তির পক্ষে সমস্যা সৃষ্টি করে, তারা প্রকল্পটি সংস্করণ-নিয়ন্ত্রণ থেকে আপডেট করে, বিল্ড চালান, তারপরে আপনার সাথে যোগাযোগ করুন, অভিযোগ করে যে
"বিল্ডটি ভাঙ্গা "।
বিষয়টিকে আরও খারাপ করার জন্য, ব্যর্থতা সাধারণত কিছু সংযোগের ত্রুটি দেয় যা সমস্যার কারণে কোনও ইঙ্গিত দেয় না এবং সময় এটির সমস্যা সমাধানের জন্য হারিয়ে যায়।
একটি প্রকল্পে আমি কাজ করেছি আমরা গ্লোববিং বন্ধ করে দিয়েছিলাম তবে নতুন ফাইল যুক্ত হওয়ার সময় এতগুলি অভিযোগ পেয়েছি যে, গ্লোব্বিংয়ের পরিবর্তে স্পষ্টভাবে ফাইল তালিকাভুক্ত করার যথেষ্ট কারণ ছিল।
এটি সাধারণ গিট কাজের প্রবাহকেও ভেঙে দেয়
( git bisect
এবং বৈশিষ্ট্যগুলির শাখাগুলির মধ্যে স্যুইচিং)।
সুতরাং আমি এটি সুপারিশ করতে পারিনি, সমস্যার ফলে এটি সুবিধার চেয়ে অনেক বেশি, যখন কেউ আপনার সফ্টওয়্যারটি এর কারণে তৈরি করতে না পারে, তারা সমস্যাটি সন্ধান করতে বা কেবল হাল ছেড়ে দেওয়ার জন্য অনেক সময় আলগা করতে পারে।
এবং অন্য একটি নোট, কেবল স্পর্শ করার CMakeLists.txt
জন্য মনে রাখা যথেষ্ট নয়, স্বয়ংক্রিয় বিল্ডগুলি যা গ্লোব্বিং ব্যবহার করে, আমাকে প্রতিটি বিল্ডেরcmake
আগে দৌড়াতে হয়েছিল যেহেতু শেষ বিল্ডিংয়ের পরে ফাইলগুলি যুক্ত / সরানো হতে পারে।
বিধি ব্যতিক্রম:
এমন সময় রয়েছে যেখানে গ্লোববিং করা বেশি পছন্দনীয়:
CMakeLists.txt
সিএমকে ব্যবহার করে না এমন বিদ্যমান প্রকল্পগুলির জন্য একটি ফাইল সেট আপ করার জন্য।
সমস্ত উত্স রেফারেন্স পাওয়ার এটি একটি দ্রুত উপায় (একবার বিল্ড সিস্টেমের চলমান - স্পষ্ট ফাইল-তালিকার সাথে গ্লোববিং প্রতিস্থাপন করুন)।
- যখন সিএমকে প্রাথমিক বিল্ড সিস্টেম হিসাবে ব্যবহার করা হয় না , উদাহরণস্বরূপ আপনি যদি এমন একটি প্রকল্প ব্যবহার করছেন যা সিএমকে ব্যবহার করছেন না এবং আপনি এটির জন্য নিজের বিল্ড-সিস্টেম বজায় রাখতে চান।
- যে কোনও পরিস্থিতির জন্য যেখানে ফাইল তালিকাটি প্রায়শই পরিবর্তিত হয় এটি বজায় রাখা অযৌক্তিক হয়ে যায়। এই ক্ষেত্রে এটি দরকারী হতে পারে, তবে তারপরে আপনাকে প্রতিবার নির্ভরযোগ্য / সঠিক বিল্ড পেতে
cmake
বিল্ড-ফাইলগুলি তৈরির জন্য দৌড়াতে হবে (যা সিএমকের অভিপ্রায়ের বিরুদ্ধে চলে - বিল্ডিং থেকে কনফিগারেশনকে বিভক্ত করার ক্ষমতা) ।
* হ্যাঁ, আমি কোনও আপডেটের আগে এবং পরে ডিস্কের ফাইলগুলির গাছের তুলনা করার জন্য একটি কোড লিখতে পারতাম, তবে এটি এত সুন্দর কাজ নয় এবং বিল্ড-সিস্টেমের আরও ভাল কিছু ছেড়ে যায়।