MakeFile 语法简介[2]

sancaiodm Shell/Ubuntu系统 2022-05-08 1358 0

函数的调用语法

函数调用,很像变量的使用,也是以“$”来标识的,其语法如下:

$(<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

评论