التوسع العودي

لا تستخدم التوسيع العودي في ملفات تكوين المنتج / اللوحة. التوسع العودي هو استخدام خام = بدلاً من := للتخصيص المتغير في ملفات makefiles. إنه يتسبب في المتغيرات التي يتم تعيينها على قيمة المتغيرات الأخرى لعدم تقييم تلك المتغيرات الأخرى حتى يتم تقييمها هي نفسها. هذه وظيفة لا يدعمها 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. إذا تم تعيين المتغيرات على نتيجة استدعاءات دالة باهظة الثمن ، فسيتم استدعاء الوظيفة مرة واحدة فقط مع التوسع البسيط ولكن من المحتمل أن يتم ذلك عدة مرات مع التوسع العودي.