এটি প্রকৃতপক্ষে কমান্ডটি সম্পাদন করছে, ডিরেক্টরিটি ডিরেক্টরিতে পরিবর্তিত করছে some_directory
, তবে এটি একটি উপ-প্রক্রিয়া শেল-এ সঞ্চালিত হয় এবং আপনি যে শেলটি থেকে কাজ করছেন তা কোনওটিই তৈরি করে না বা শেলকেও প্রভাবিত করে না।
যদি আপনি এর মধ্যে আরও কার্য সম্পাদন করতে চান তবে আপনাকে some_directory
একটি আধা-কোলন যুক্ত করতে হবে এবং অন্যান্য কমান্ডগুলিও যুক্ত করতে হবে। মনে রাখবেন যে আপনি নিউলাইনগুলি নিয়মের শেষ হিসাবে তৈরি করে ব্যাখ্যা করার সাথে সাথে ব্যবহার করতে পারবেন না, সুতরাং আপনি স্পষ্টতার জন্য যে কোনও নিউলাইনগুলি ব্যবহার করেন তা ব্যাকস্ল্যাশ দ্বারা এড়ানো উচিত।
উদাহরণ স্বরূপ:
all:
cd some_dir; echo "I'm in some_dir"; \
gcc -Wall -o myTest myTest.c
আপনি একটি ব্যাকস্ল্যাশ এবং একটি নতুন লাইন যুক্ত করলেও প্রতিটি কমান্ডের মধ্যে সেমিকোলন প্রয়োজনীয় necessary এটি পুরো স্ট্রিংটি শেল দ্বারা একটি একক লাইন হিসাবে পার্স করা হয় এর কারণে এটি। মন্তব্যে উল্লিখিত হিসাবে, আপনার কমান্ডগুলিতে যোগ দিতে '&&' ব্যবহার করা উচিত, যার অর্থ পূর্ববর্তী কমান্ডটি সফল হলে তারা কেবলমাত্র মৃত্যুদন্ড কার্যকর করতে পারেন।
all:
cd some_dir && echo "I'm in some_dir" && \
gcc -Wall -o myTest myTest.c
ধ্বংসাত্মক কাজ করার সময় এটি বিশেষত গুরুত্বপূর্ণ, যেমন পরিষ্কার-পরিচ্ছন্নতা, কারণ আপনি অন্যথায় ভুল জিনিসটি নষ্ট করবেন, cd
যে কোনও কারণেই ব্যর্থ হওয়া উচিত ।
একটি সাধারণ ব্যবহার হ'ল সাব ডিরেক্টরিতে মেক কল করা, যা আপনি সন্ধান করতে চাইতে পারেন। এর জন্য একটি কমান্ড লাইন বিকল্প রয়েছে যাতে আপনাকে cd
নিজেকে কল করতে হবে না , তাই আপনার নিয়মটি এ জাতীয় দেখাচ্ছে
all:
$(MAKE) -C some_dir all
যা পরিবর্তিত হবে some_dir
এবং Makefile
লক্ষ্যটিকে "সমস্ত" দিয়ে সেখানে এটিকে সম্পাদন করবে । সেরা অনুশীলন হিসাবে, সরাসরি $(MAKE)
কল করার পরিবর্তে ব্যবহার করুন make
, কারণ ডান মেক দৃষ্টান্তটি কল করতে যত্ন নেওয়া হবে (যদি আপনি উদাহরণস্বরূপ, আপনার বিল্ড পরিবেশের জন্য একটি বিশেষ মেক সংস্করণ ব্যবহার করেন), পাশাপাশি চলমান অবস্থায় কিছুটা আলাদা আচরণ প্রদান করুন নির্দিষ্ট সুইচ ব্যবহার করে যেমন -t
।
রেকর্ডের জন্য, সর্বদা কমান্ডটি এটি সম্পাদন করে নিন (এটি স্পষ্টভাবে চাপা না দেওয়া পর্যন্ত), যদি এর কোনও আউটপুট না থাকে, যা আপনি দেখছেন।
make
আমি কখনই ডিরেক্টরিটি পরিবর্তন করতে চাইনি। আপনার সমাধানের জন্য অন্য পদ্ধতির চেষ্টা করা উচিত?