การขยายตัวแบบเรียกซ้ำ

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