মেকের ক্ষেত্রে ভেরিয়েবল অ্যাসাইনমেন্টের জন্য, আমি দেখতে পাচ্ছি: = এবং = অপারেটর। তাদের মধ্যে পার্থক্য কী?
মেকের ক্ষেত্রে ভেরিয়েবল অ্যাসাইনমেন্টের জন্য, আমি দেখতে পাচ্ছি: = এবং = অপারেটর। তাদের মধ্যে পার্থক্য কী?
উত্তর:
এটি GNU Make ডকুমেন্টেশনগুলিতে বর্ণিত হয়েছে , ভেরিয়েবলের দুটি স্বাদ 6.2 শিরোনামে বিভাগে ।
সংক্ষেপে, সংজ্ঞায়িত ভেরিয়েবলগুলি :=
একবার প্রসারিত হয় তবে এর সাথে সংজ্ঞায়িত ভেরিয়েবলগুলি =
যখনই ব্যবহৃত হয় তখন প্রসারিত হয়।
make
প্রধান কাজ) এই জাতীয় অভ্যন্তরীণ পরিবর্তনশীল সমাধানের চেয়ে অনেক বেশি ওভারহেড রয়েছে।
:=
একটি সাধারণ অ্যাসাইনমেন্ট এক্সপ্রেশনটি প্রথম বারে একবারেই মূল্যায়ন করা হয়। উদাহরণস্বরূপ, যদি CC :=${GCC} ${FLAGS}
প্রথম মুখোমুখি gcc -W
সময়টি মূল্যায়ন করা হয় তবে প্রতিবারের ${CC}
সাথে এটি প্রতিস্থাপন করা হবে gcc -W
।
=
কোডটিতে ভেরিয়েবলের মুখোমুখি হওয়ার সাথে সাথে একটি পুনরাবৃত্তির অ্যাসাইনমেন্ট এক্সপ্রেশনটি মূল্যায়ন করা হয়। উদাহরণস্বরূপ, এর মতো একটি বিবৃতি CC = ${GCC} {FLAGS}
কেবল তখনই মূল্যায়ন করা হবে যখন কোনও ক্রিয়া ${CC} file.c
কার্যকর করা হয়। তবে, যদি ভেরিয়েবলটি GCC
পুনরায় নিয়োগ করা হয়
GCC=c++
তবে এরপরে পুনরায় নিয়োগের পরে ${CC}
রূপান্তরিত হবে c++ -W
।
?=
শর্তসাপেক্ষ অ্যাসাইনমেন্ট কেবলমাত্র একটি ভেরিয়েবলের জন্য একটি মান নির্ধারণ করে যদি এর কোনও মান না থাকে
+=
অনুমান CC = gcc
তারপর সংযোজন অপারেটর মত ব্যবহার করা হয় CC += -w
তারপর CC
এখন মূল্য আছেgcc -W
আরও টিউটোরিয়াল পরীক্ষা করে দেখুন
Http://www.gnu.org/software/make/manual/make.html#Flavors থেকে :
=
একটি পুনরাবৃত্ত-প্রসারিত ভেরিয়েবল সংজ্ঞায়িত করে। :=
একটি সহজ-প্রসারিত ভেরিয়েবল সংজ্ঞা দেয়।