MakeFile 语法简介[2]
函数的调用语法
函数调用,很像变量的使用,也是以“$”来标识的,其语法如下:
$(<function> <arguments>)
或是
${<function> <arguments>}
这里,<function>就是函数名,make支持的函数不多。<arguments>是函数的参数,参数间以逗号“,”分隔,而函数名和参数之间以“空格”分隔。函数调用以“$”开头,以圆括号或花括号把函数名和参数括起
--------------------
filter: 过滤语句,过滤掉不符合指定模式的内容。仅保留符合指定的模式的内容:
sources := a b c d f g
# 指定的模式为 a b c ,多个模式间,用空格区分
$(filter a b c , $(sources))
# 上式返回值为:a b c
//如果编译的版本是userdebug或是eng版本 ,则条件为真,
//$(filter userdebug eng, $(TARGET_BUILD_VARIANT))过滤变量TARGET_BUILD_VARIANT不是指定模式userdebug,eng的字符后变量不为空
ifneq( ,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
ro.androidos.net = androidsystem
endif
--------------------
ifneq : 判断语句,用于比较两个参数,如果两个参数不等,则该语句通过
ifeq 判断语句,用于比较两个参数,如果两个参数相等,则该语句通过
//如果$(MTK_ANDROID_XX)变量值不为yes 则条件为true
ifneq($(MTK_ANDROID_XX),yes)
CMD_LINE = 12,23,34
else
CMD_LINE = aa,bb,cc
endif
//$(CUSTOM_ANDROID_XX)变量为yes都条件为真
ifeq($(CUSTOM_ANDROID_XX),yes)
LOCAL_FILAGES += aaa
endif
ifeq (true,$(non_system_module))
.....
endif
评论