"সমস্ত" একটি মেকফিলের জন্য কী দাঁড়ায়?


105

আমি মেকফিলস সম্পর্কিত কিছু টিউটোরিয়াল পড়েছি তবে লক্ষ্য "সমস্ত" কী দাঁড়ায় এবং এটি কী করে তা এখনও আমার পক্ষে পরিষ্কার নয়।

কোন ধারনা?

উত্তর:


116

একটি বিল্ড, যেমন মেকফিল এটি বোঝে, প্রচুর লক্ষ্যবস্তু নিয়ে গঠিত। উদাহরণস্বরূপ, একটি প্রকল্প তৈরি করতে আপনার প্রয়োজন হতে পারে

  1. File1.c এর বাইরে file1.o তৈরি করুন
  2. File2.o এর বাইরে file2.o তৈরি করুন
  3. File3.o এর বাইরে file3.o তৈরি করুন
  4. File1.o এবং file3.o এর বাইরে এক্সিকিউটেবল 1 তৈরি করুন
  5. ফাইল 2.o এর বাইরে এক্সিকিউটেবল 2 তৈরি করুন

আপনি যদি এই ওয়ার্কফ্লোটি মেকফিল দিয়ে প্রয়োগ করেন তবে আপনি লক্ষ্যবস্তুগুলির পৃথক পৃথকভাবে করতে পারেন। উদাহরণস্বরূপ, আপনি যদি লিখেন

make file1.o

এটি কেবল যদি প্রয়োজন হয় তবে এই ফাইলটি তৈরি করবে।

নাম allনির্দিষ্ট করা হয় না। এটি কেবল একটি প্রচলিত নাম; allলক্ষ্য দ্বারা বোঝানো হয় যে আপনি এটা ডাকা, করতে গড়ে তুলবে সব কি একটি সম্পূর্ণ বিল্ড করতে দরকার । এটি সাধারণত একটি ডামি লক্ষ্য, যা কোনও ফাইল তৈরি করে না, তবে কেবলমাত্র অন্যান্য ফাইলের উপর নির্ভর করে। উপরের উদাহরণের জন্য, সমস্ত প্রয়োজনীয় বিল্ডিং এক্সিকিউটেবলগুলি বিল্ড করা, অন্যান্য ফাইলগুলি নির্ভরতা হিসাবে টানা হয়। সুতরাং মেকফিলটিতে এটি দেখতে এমন দেখাচ্ছে:

all: executable1 executable2

allলক্ষ্যটি মেকফিলের মধ্যে সাধারণত প্রথম হয়, যেহেতু আপনি যদি makeলক্ষ্যটি নির্দিষ্ট না করে কেবল কমান্ড লাইনে লিখে থাকেন তবে এটি প্রথম লক্ষ্যটি তৈরি করবে। এবং আপনি এটি হতে আশা all

allসাধারণত একটি .PHONYলক্ষ্য। এখানে আরও জানুন ।


31

জিএনইউ মেকের জন্য ম্যানুয়ালটি allতার মানক লক্ষ্যগুলির তালিকার জন্য একটি পরিষ্কার সংজ্ঞা দেয় ।

যদি মেকফিলের লেখক সেই সম্মেলনটি অনুসরণ করে তবে লক্ষ্যটি allহওয়া উচিত:

  1. পুরো প্রোগ্রামটি কম্পাইল করুন, তবে ডকুমেন্টেশন তৈরি করুন না।
  2. ডিফল্ট লক্ষ্য হতে হবে। চলমান হিসাবে ঠিক makeএকই কাজ করা উচিত make all

1 অর্জনের allজন্য সাধারণত একটি .PHONYলক্ষ্য হিসাবে সংজ্ঞায়িত করা হয় যা সম্পূর্ণ প্রোগ্রামটি নির্বাহী (গুলি) এর উপর নির্ভর করে:

.PHONY : all
all : executable

2 অর্জনের জন্য allহয় মেক ফাইলে সংজ্ঞায়িত প্রথম লক্ষ্য হওয়া উচিত বা ডিফল্ট লক্ষ্য হিসাবে নির্ধারিত হওয়া উচিত:

.DEFAULT_GOAL := all

3

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


2

লক্ষ্য "সমস্ত" একটি ডামি টার্গেটের উদাহরণ - ডিস্কে "অল" নামে কিছুই নেই। এর অর্থ হ'ল আপনি যখন "সমস্ত তৈরি করুন" করেন, সর্বদা মনে করুন যে এটি তৈরি করা দরকার এবং তাই সেই লক্ষ্যের জন্য সমস্ত কমান্ড কার্যকর করে। এই কমান্ডগুলি সাধারণত এমন হবে যা মেকফিলগুলি জানবে এমন সমস্ত শেষ-পণ্য তৈরি করে তবে এটি কিছু করতে পারে।

ডামি টার্গেটের অন্যান্য উদাহরণগুলি "পরিষ্কার" এবং "ইনস্টল" এবং তারা একইভাবে কাজ করে।

আপনি যদি এখনও এটি না পড়ে থাকেন তবে আপনার এটি পড়া উচিত জিএনইউ মেক ম্যানুয়ালটি , এটি একটি দুর্দান্ত টিউটোরিয়ালও।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.