不要在产品/电路板配置中定义新的 make 函数,原因有两个:
- 如果稍后在
Android.mk
文件中使用该函数,则在产品配置转换为 Starlark 时将不再定义该函数,Android.mk
文件可能无法按预期工作。 - Makefile 到 Starlark 的转换器一次只查看一个文件,并且函数定义通常位于与调用它们的位置不同的文件中。
虽然 make 函数实际上只是一个使用内置$(call)
函数评估的变量,但 Make 到 Starlark 转换器将假定使用define
关键字定义的任何变量都是函数定义并拒绝它。所以一个函数看起来像:
define my-func
Some text, arg1: $(1)
enddef
$(call my-func,foo)
我们提供脚本来自动将一些常用函数替换为核心构建系统 Makefile 中定义的函数。它们可以在build/bazel/mk2rbc 找到。