Ürün/kart yapılandırmasında yeni make işlevleri tanımlamayın, iki nedenden dolayı:
- İşlev daha sonra bir
Android.mk
dosyasında kullanılırsa, ürün yapılandırması Starlark'a dönüştürüldüğünde artık tanımlanmayacaktır veAndroid.mk
dosyası amaçlandığı gibi çalışmayabilir. - Makefile'den Starlark'a dönüştürücü, aynı anda yalnızca bir dosyaya bakar ve işlev tanımları genellikle çağrıldıkları yerden farklı dosyalarda bulunur.
Bir make işlevi, yalnızca yerleşik $(call)
işlevi kullanılarak değerlendirilen bir değişken olsa da, Make to Starlark dönüştürücü, define
anahtar sözcüğüyle tanımlanan herhangi bir değişkenin bir işlev tanımı olduğunu varsayar ve reddeder. Yani bir fonksiyon şöyle görünür:
define my-func
Some text, arg1: $(1)
enddef
$(call my-func,foo)
Bazı ortak işlevleri otomatik olarak temel yapı sistemi Makefiles'de tanımlananlarla değiştirmek için komut dosyaları sağlıyoruz. build/bazel/mk2rbc adresinde bulunabilirler.