อย่าใช้ การขยายแบบเรียกซ้ำ ใน makefiles config ผลิตภัณฑ์/บอร์ด การขยายแบบเรียกซ้ำคือการใช้ raw =
แทน :=
สำหรับการกำหนดตัวแปรใน 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 จะเสร็จสิ้น หากตั้งค่าตัวแปรเป็นผลลัพธ์ของการเรียกฟังก์ชันราคาแพง ฟังก์ชันจะถูกเรียกเพียงครั้งเดียวด้วยการขยายอย่างง่าย แต่อาจหลายครั้งด้วยการขยายแบบเรียกซ้ำ