두 가지 이유로 제품/보드 구성에서 새로운 make 기능을 정의하지 마십시오.
- 이후에
Android.mk
파일에서 함수를 사용하게 되면 제품 구성을 Starlark로 변환할 때 더 이상 정의되지 않고,Android.mk
파일이 의도한 대로 동작하지 않을 수 있습니다. - Makefile to Starlark 변환기는 한 번에 하나의 파일만 보고 함수 정의는 호출된 위치와 다른 파일에 있는 경우가 많습니다.
make 함수는 실제로 내장 $(call)
함수를 사용하여 평가되는 변수일 뿐이지만 Make to Starlark 변환기는 define
키워드로 정의된 모든 변수가 함수 정의라고 가정하고 이를 거부합니다. 따라서 함수는 다음과 같습니다.
define my-func
Some text, arg1: $(1)
enddef
$(call my-func,foo)
일부 공통 기능을 핵심 빌드 시스템 Makefiles에 정의된 기능으로 자동 교체하는 스크립트를 제공합니다. build/bazel/mk2rbc 에서 찾을 수 있습니다.