মেকফাইলে ওয়াইল্ডকার্ড এবং ফোরচ

Mekapha Ile Oya Ildakarda Ebam Phoraca



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

মেকফাইলে ওয়াইল্ডকার্ড

সাধারণভাবে, ওয়াইল্ডকার্ড এমন একটি ফ্যাক্টর হিসেবে পরিচিত যা ভবিষ্যদ্বাণী করা যায় না এবং যে কোনো উপায়ে পরিস্থিতি মোড় নিতে পারে। মেকফাইলের ওয়াইল্ডকার্ডগুলি বর্তমান কার্যকারী ডিরেক্টরি থেকে সমস্ত সম্ভাব্য প্যাটার্ন সনাক্ত করার জন্য একটি বোনাস সঞ্চালন করতে ব্যবহৃত হয়, তা ফাইল বা যে কোনও ফোল্ডারই হোক না কেন। এই সোর্স ফাইল যে কোনো ধরনের হতে পারে।







একটি মেকফাইলে একটি ওয়াইল্ডকার্ড ব্যবহার করতে, আপনাকে 'ওয়াইল্ডকার্ড' কীওয়ার্ড ব্যবহার করতে হবে যা তারকাচিহ্ন '*' বা '?' অনুসরণ করে। সাইন এবং ফাইল এক্সটেনশন যা একটি বিন্দুর মাধ্যমে সংযুক্ত। আপনি '?' ব্যবহার করতে পারেন একটি একক অক্ষর অনুসন্ধান করতে সাইন ইন করুন এবং যেকোনো সংখ্যক অক্ষর মেলে '*'। এই সম্পূর্ণ কাঠামোটি বন্ধনী এবং একটি '$' চিহ্নের মধ্যে ব্যবহার করা উচিত। উদাহরণস্বরূপ, আমরা 'SRCS' ভেরিয়েবল ঘোষণা করি যা ওয়াইল্ডকার্ডের মাধ্যমে এর মান ফাইল পায়। এই ওয়াইল্ডকার্ডটি তাদের শেষে 'cpp' প্যাটার্ন সহ সমস্ত ফাইল সন্ধান করে।





মেকফাইলে পূর্বাভাস

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





সূত্র:= file1.c file2.c file3.c
উদ্দেশ্য := $ ( foreach src,$ ( সূত্র ) ,$ ( src:.c=.o ) )
$অবজেক্ট : % .ও: % .c
$ ( সিসি ) $ ( CFLAGS ) -গ $ < -ও $ @

উদাহরণ 1: ওয়াইল্ডকার্ড ব্যবহার করা

ওয়াইল্ডকার্ড এবং ফোরচ ফাংশনগুলির চিত্র এবং কাজ প্রদর্শন করতে, আমরা একটি C++ ফাইল প্রবর্তন করি। এই 'salary.cpp' ফাইলটি ইনপুট এবং আউটপুট স্ট্রিমগুলির একটি মসৃণ ব্যবহারের অনুমতি দেওয়ার জন্য 'iostream' হেডার ব্যবহার করে শুরু করা হয়েছে। প্রধান পদ্ধতিটি পূর্ণসংখ্যার প্রকারের একটি পরিবর্তনশীল 's' এবং রানটাইমে একটি ইনপুট মান জিজ্ঞাসা করার জন্য 'cout' বিবৃতি ঘোষণা করে। 'cin' স্ট্যান্ডার্ড ইনপুট স্ট্রীম রানটাইমে একজন ব্যবহারকারীর কাছ থেকে মান পায় এবং এটি পরিবর্তনশীল 's' এ সংরক্ষণ করে। 'cout' কনসোল স্ক্রিনে একজন ব্যবহারকারী দ্বারা ইনপুট করা মান প্রদর্শন করে।

# অন্তর্ভুক্ত করুন
নামস্থান std ব্যবহার করে;
int প্রধান ( ) {
int s;
cout << 'বেতন লিখুন:' ;
খাওয়া >> s;
cout << ' \n বেতন:' << s << endl;
ফিরে 0 ;
}



আমরা 'CXX' ভেরিয়েবল দিয়ে মেকফাইল শুরু করি যা C++ এর জন্য কম্পাইলারকে সংজ্ঞায়িত করে এবং CXXFLAGS ভেরিয়েবল C++ কম্পাইলারের জন্য ফ্ল্যাগ ধারণ করে। এক্সিকিউটেবল ভেরিয়েবল একটি এক্সিকিউটেবল 'হ্যালো' ফাইলের নাম ধারণ করে যা একটি মেকফাইল চালানোর পরে তৈরি হয়। SRCS ভেরিয়েবলটি '.cpp' দিয়ে শেষ হওয়া যেকোনো প্যাটার্ন অনুসন্ধান করতে ওয়াইল্ডকার্ড '*' ব্যবহার করে বর্তমান ডিরেক্টরি থেকে সমস্ত C++ ফাইল পায়। OBJS ভেরিয়েবল SRCS ভেরিয়েবল ব্যবহার করে তৈরি করা অবজেক্ট ফাইলগুলির নাম ধারণ করে, 'cpp' এক্সটেনশনটিকে 'o' দিয়ে প্রতিস্থাপন করে। ডিফল্ট 'সমস্ত' টার্গেট মেকফাইল তৈরি করে এবং এটি এক্সিকিউটেবল ভেরিয়েবলের উপর নির্ভর করে।

প্রথম নিয়মটি লক্ষ্য 'হ্যালো' ফাইল তৈরি করে যা 'OBJS' ভেরিয়েবলের মাধ্যমে তৈরি করা ফাইলের নাম ব্যবহার করে OBJS ভেরিয়েবল (অবজেক্ট ফাইলের নাম) অবজেক্ট ফাইলের উপর নির্ভর করে। দ্বিতীয় মেকফাইল নিয়মটি '.o' এক্সটেনশন সহ অবজেক্ট ফাইল তৈরি করে যা C++ কোড ফাইল কম্পাইল করার পরে C++ ফাইলের উপর নির্ভর করে। এখানে, '%' হল একটি ওয়াইল্ডকার্ড যা 'cpp' দিয়ে শেষ হওয়া যেকোনো প্যাটার্নের ফাইলের নাম অনুসন্ধান করার জন্য। শেষ পর্যন্ত, ক্লিন টার্গেট '-f' পতাকা ব্যবহার করে একটি ডিরেক্টরি থেকে নতুন উৎপন্ন এক্সিকিউটেবল এবং অবজেক্ট ফাইলগুলিকে জোরপূর্বক পরিষ্কার করতে তার 'rm' কমান্ড ব্যবহার করে।

CXX = g++
CXXFLAGS = -ওয়াল -std =c++ এগারো
এক্সিকিউটেবল = হ্যালো
SRCS = $ ( ওয়াইল্ডকার্ড * .cpp )
OBJS = $ ( SRCS:.cpp=.o )
সব: $ ( এক্সিকিউটেবল )
$ ( এক্সিকিউটেবল ) : $ ( ওবিজেএস )
$ ( সিএক্সএক্স ) $ ( সিএক্সএক্সফ্ল্যাগস ) -ও $ @ $ ( ওবিজেএস )
% .ও: % .cpp
$ ( সিএক্সএক্স ) $ ( সিএক্সএক্সফ্ল্যাগস ) -গ $ < -ও $ @
পরিষ্কার:
rm -চ $ ( এক্সিকিউটেবল ) $ ( ওবিজেএস )

'মেক' নির্দেশনা চালানোর পরে, লক্ষ্য এবং অবজেক্ট ফাইল উভয়ই তৈরি করা হয়েছিল। এক্সিকিউটেবল 'হ্যালো' ফাইলটি কার্যকর করার পরে, ব্যবহারকারীকে একটি বেতন লিখতে বলা হয় এবং আমরা '67000' যোগ করি। শেষে, বেতন ফিরে প্রদর্শিত হয়.

করা

উদাহরণ 2: Foreach ব্যবহার করা

ওয়াইল্ডকার্ড ব্যবহার করার পরে, মেকফাইলে ফোরচ ফাংশনটি ব্যবহার করার সময় এসেছে। বাকি মেকফাইল কোড একই। লাইন 6-এ, আমরা আরেকটি ভেরিয়েবল শুরু করি যা হল 'NAMES' তিনটি মানের তালিকা সহ - Kate, Kim, Tim। ডিফল্ট 'সমস্ত' টার্গেট এক্সিকিউটেবল ভেরিয়েবল (টার্গেট ফাইলের নাম 'হ্যালো') এবং ফরিচ স্টেটমেন্টের উপর নির্ভর করে। 'অ্যাডপ্রেফিক্স' ফাংশনটি 'NAMES' তালিকার প্রতিটি নামের শুরুতে 'রান_' উপসর্গ দিয়ে গতিশীলভাবে লক্ষ্য নামগুলি তৈরি করতে 'NAMES' ভেরিয়েবলকে পুনরাবৃত্তি করে।

আট লাইনের নিয়মটি নির্দেশ করে যে একটি আউটপুট এক্সিকিউটেবল টার্গেট ফাইল, যেমন হ্যালো, 'OBJS' এর উপর নির্ভরশীল। '-o' পতাকা OBJS ব্যবহার করে টার্গেট আউটপুট ফাইল তৈরি করে। দশম লাইনের নিয়মটি 'cpp' এক্সটেনশন সহ সোর্স ফাইলগুলি ব্যবহার করে লক্ষ্য বস্তু ফাইল তৈরি করে। এটি করার জন্য, '-c' পতাকাটি একটি উত্স ফাইল কম্পাইল করতে এবং লক্ষ্য প্রজন্মের জন্য প্রয়োজনীয় সম্পর্কিত অবজেক্ট ফাইল তৈরি করতে ব্যবহার করা হয়। ত্রয়োদশ লাইনে, আমরা প্রিফিক্স হিসাবে “run_” দিয়ে শুরু হওয়া বিভিন্ন নাম দিয়ে আউটপুট তৈরি করতে EXECUTABLE ভেরিয়েবল ব্যবহার করি। শেষ পর্যন্ত, ক্লিন টার্গেট এবং ফোনি টার্গেট অবজেক্ট এবং টার্গেট ফাইলগুলি মুছে ফেলবে এবং পরিষ্কার করবে।

CXX = g++
CXXFLAGS = -ওয়াল -std =c++ এগারো
# এক্সিকিউটেবল টার্গেট ফাইল
এক্সিকিউটেবল = হ্যালো
SRCS = $ ( ওয়াইল্ডকার্ড * .cpp )
OBJS = $ ( SRCS:.cpp=.o )
# নামের তালিকা
নাম = কেট কিম টিম
#লক্ষ্য
সব: $ ( এক্সিকিউটেবল ) $ ( addprefix run_, $ ( নাম ) )
$ ( এক্সিকিউটেবল ) : $ ( ওবিজেএস )
$ ( সিএক্সএক্স ) $ ( সিএক্সএক্সফ্ল্যাগস ) -ও $ @ $ ( ওবিজেএস )
% .ও: % .cpp
$ ( সিএক্সএক্স ) $ ( সিএক্সএক্সফ্ল্যাগস ) -গ $ < -ও $ @
# প্রতিটি নামের জন্য লক্ষ্য তৈরি করুন
দৌড়াও % : $ ( এক্সিকিউটেবল )
. / $ ( এক্সিকিউটেবল ) $*
পরিষ্কার:
rm -চ $ ( এক্সিকিউটেবল ) $ ( ওবিজেএস )
# ভুয়া লক্ষ্য
ফোনি: সব পরিষ্কার

'মেক' নির্দেশের ব্যবহার এক্সিকিউটেবল 'হ্যালো' টার্গেট তৈরি করে এবং 'NAMES' ভেরিয়েবলে নির্দিষ্ট করা প্রতিটি নামের জন্য প্রোগ্রাম চালায়।

করা

আপনি 'রান_' উপসর্গ সহ একটি তালিকা থেকে নাম ব্যবহার করে আপনার আউটপুট পরিবর্তন করতে পারেন।

রান_কিম তৈরি করুন

উপসংহার

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