Starlark'ta ifadeleri dahil etme ve devralma

make'te, bir include ifadesi, değişkenleri olan dosya yollarını içerebilir ve önüne bir eksi eklendiğinde var olmayan dosyaları yok sayar. Ürün konfigürasyon eşdeğeri inherit-product-if-exists işlevidir. Starlark, dizge hazır değeri tarafından tanımlanan dosyalarla load deyimlerini kullanır ve bir dosya yoksa, Starlark bir hata atar.

Bu sınırlamayı aşmak için Starlark dönüştürücü:

  • değişkenleri içeren yolla eşleşebilecek tüm Makefile dosyalarını bulur
  • hepsi için Starlark load bildirimleri yayar
  • çalışma zamanında doğru olanı seçer

Oluşturulan Starlark kodunun, yalnızca biri yürütülecek olsa bile eşleşen tüm yolları listelediğinden doğal görünmeyebileceğini unutmayın.

include / inherit-product ifadelerindeki değişken referanslarını kaldırmanızı öneririz.

Değişken referanslarından kaçınılamadığı zaman, değişken kısmı en aza indirmeye çalışın. Örneğin:

MY_DIR := path/to/$(TARGET_PRODUCT)
include $(MY_DIR)/file.mk

dönüştürücünün kaynak ağaçtaki her file.mk için bir load ifadesi oluşturmasına neden olurken,

include path/to/$(TARGET_PRODUCT)/file.mk

path/to altındaki file.mk dosyalarıyla sınırlandırır. Elbette TARGET_PRODUCT kullanımının da kaldırılması ideal olacaktır.