মেকফাইলে% চিহ্ন বলতে কী বোঝায়


11

আমি মেকফিলগুলি নিয়ে প্রায় খেলছি এবং আমি % .o বা % .c জুড়ে এসেছি । আমি যা বুঝতে পেরেছি তা থেকে এটি সমস্ত সি বা হে ফাইল নির্দিষ্ট করে। তবে কেন এই কাজ:

%.o: %.c
        $(CC) -c $^  -o $@  

এবং এই কাজ করে না

SOURCE := $(wildcard *.c)

$(SOURCE:.c=.o): SOURCE
        $(CC) -c $^  -o $@

উভয় এক্সপ্রেশন সমস্ত ফাইল নির্দিষ্ট করে। সুতরাং % .o: মেক ফাইলের মধ্যে চিহ্ন কী করে?

উত্তর:


9

উভয় এক্সপ্রেশন সমস্ত ফাইল নির্দিষ্ট করে।

নাহ, প্রথম নিয়মটি সম্পর্কিত ফাইলটি দিয়ে makeএকটি .oফাইল কীভাবে পাবেন তা জানায় .c। একক নোট: একক ফাইল।

দ্বিতীয় নিয়ম (দাবী) সম্পর্কিত ফাইলগুলির আরও makeএকটি গুচ্ছ .oপ্রদত্ত কীভাবে একটি গুচ্ছ ফাইলগুলি প্রাপ্ত করবেন তা বলুন .c। বহুবচনটি নোট করুন: গ্লোব্বিংয়ের .cফলে সমস্ত ফাইল *.c

পার্শ্ব নোটে, %.o: %cএকটি জিএনইউ এক্সটেনশন।

অন্য দিকে নোটে, আপনি makeস্ট্যাকওভারফ্লোতে কীভাবে ব্যবহার করবেন তা শিখবেন না । পরিবর্তে আপনার কোনও বই পড়া বিবেচনা করা উচিত।


আরটিএফএম, সত্যি? আমি ভেবেছিলাম স্ট্যাকেক্সচেঞ্জের মূল বিষয়টি সেই মানসিকতাকে মুছে ফেলা।
২৯:৪৯

12

নির্মাণ:

%.o: %.c
        $(CC) -c $^  -o $@  

একটি নিদর্শন নিয়ম , যা অন্তর্ভুক্ত নিয়মের এক প্রকার। এটি একটি লক্ষ্য এবং একটি নির্ভরতা সুনির্দিষ্ট করে এবং $(CC)প্রতিটি লক্ষ্যটির জন্য একটি করে প্রার্থনার কারণ হয় । যদিও এটি:

SOURCE := $(wildcard *.c)

$(SOURCE:.c=.o): SOURCE
        $(CC) -c $^  -o $@

এটি একটি মান নিয়ম তবে এটির (সম্ভবত) অনেক লক্ষ্য এবং অনেকগুলি নির্ভরতা রয়েছে। তবুও এই সমস্তগুলির জন্য, এটি কেবল $(CC)একবারই প্রার্থনা করবে ।

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