yinelemeli genişleme

Ürün/kart yapılandırması makefiles'de özyinelemeli genişletme kullanmayın. Özyinelemeli genişletme, makefile'lerde değişken ataması için := yerine ham = kullanılmasıdır. Diğer değişkenlerin değerine ayarlanan değişkenlerin, kendileri değerlendirilene kadar diğer değişkenleri değerlendirmemesine neden olur. Bu, Starlark'ın desteklemediği bir işlevdir.

Kaldırılması, büyük ölçüde nasıl kullanıldığına ilişkin özel senaryoya bağlıdır. Çoğu zaman, değişken atamalarını kullanıldıkları yerden önceye taşımayı içerir. Örneğin, değiştirin:

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

ile:

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

+= ile bir değişkene ekleme, bu değişkene daha önce basit genişletme ile atanmamışsa, özyinelemeli genişletmeyi kullanır. Değişkenin daha önce atanıp atanmadığından emin değilseniz, += MY_VAR := $(strip $(MY_VAR) new_value) ile değiştirilebilir.

Ertelenen genişletmenin kaldırılması, Starlark'a dönüştürme yapılmadan önce bile Makefile'lerin değerlendirilmesini hızlandırabilir. Değişkenler, pahalı işlev çağrılarının sonucuna ayarlanmışsa, işlev yalnızca basit genişletme ile bir kez, ancak yinelemeli genişletme ile potansiyel olarak birçok kez çağrılacaktır.