بسط بازگشتی

از بسط بازگشتی در فایل های پیکربندی محصول/برد استفاده نکنید. بسط بازگشتی استفاده از raw = به جای := برای انتساب متغیر در فایل های makefi است. این باعث می شود که متغیرهایی که روی مقدار متغیرهای دیگر تنظیم شده اند، تا زمانی که خودشان ارزیابی نشوند، آن متغیرهای دیگر را ارزیابی نکنند. این قابلیتی است که Starlark از آن پشتیبانی نمی کند.

حذف آن تا حد زیادی به سناریوی خاص نحوه استفاده از آن بستگی دارد. بیشتر اوقات شامل جابجایی تکالیف متغیر به قبل از جایی است که از آنها استفاده می شود. به عنوان مثال، جایگزین کنید:

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) جایگزین کرد.

حذف گسترش معوق همچنین می تواند ارزیابی Makefiles را حتی قبل از اینکه تبدیل به Starlark انجام شود سرعت بخشد. اگر متغیرها بر روی نتیجه فراخوانی تابع گران قیمت تنظیم شوند، تابع فقط یک بار با بسط ساده اما به طور بالقوه چندین بار با بسط بازگشتی فراخوانی می شود.