পুনরাবৃত্তিমূলক সম্প্রসারণ

পণ্য/বোর্ড কনফিগারেশন মেকফাইলে পুনরাবৃত্তিমূলক প্রসারণ ব্যবহার করবেন না। রিকার্সিভ এক্সপেনশন হল মেকফাইলে পরিবর্তনশীল অ্যাসাইনমেন্টের জন্য a := এর পরিবর্তে একটি raw = ব্যবহার করা। এটি অন্যান্য ভেরিয়েবলের মানের সাথে সেট করা ভেরিয়েবলগুলিকে সেই অন্য ভেরিয়েবলগুলিকে মূল্যায়ন না করার কারণ করে যতক্ষণ না তারা নিজেরাই মূল্যায়ন করা হয়। এটি এমন কার্যকারিতা যা স্টারলার্ক সমর্থন করে না।

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

MY_VAR_2 = foo
# Some stuff in between...
MY_VAR = $(MY_VAR_2)
MY_VAR_2 = bar
# $(MY_VAR) is bar here.

সঙ্গে:

MY_VAR_2 := foo
# Some stuff in between...
MY_VAR_2 := bar
MY_VAR := $(MY_VAR_2)
# $(MY_VAR) is bar here.

+= সহ একটি ভেরিয়েবলের সাথে যুক্ত করা রিকার্সিভ এক্সপেনশন ব্যবহার করে যদি সেই ভেরিয়েবলটিকে আগে সাধারণ প্রসারণের সাথে বরাদ্দ করা না হয়। যদি আপনি নিশ্চিত না হন যে ভেরিয়েবলটি আগে বরাদ্দ করা হয়েছে, তাহলে += MY_VAR := $(strip $(MY_VAR) new_value) দিয়ে প্রতিস্থাপন করা যেতে পারে।

স্থগিত সম্প্রসারণ অপসারণ করা স্টারলার্ক-এ রূপান্তর হওয়ার আগেও মেকফাইলসের মূল্যায়নকে ত্বরান্বিত করতে পারে। যদি ভেরিয়েবলগুলি ব্যয়বহুল ফাংশন কলের ফলাফলে সেট করা হয়, তবে ফাংশনটিকে শুধুমাত্র একবার সাধারণ প্রসারণের সাথে কল করা হবে কিন্তু সম্ভাব্যভাবে বহুবার পুনরাবৃত্ত সম্প্রসারণ সহ।