Makefile中有很多函数,这里逐步归类:
1. if函数
函数原型: $(if <condition>,<then part>,<else part>)
函数说明:condition是判断条件,如果condition返回非空字符串,那就执行<then part>部分,如果condition返回空字符串,那就执行<else part>部分。
函数返回:返回<then part> 或者<else part>的执行结果
举例:$(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT)
首先判断$(KBUILD_VERBOSE:1=)的结果,如果KBUILD_VERBOSE=1,则将KBUILD_VERBOSE替换为空字符串,那执行结果就为空字符串,那整个if的返回结果也为空字符串
如果KBUILD_VERBOSE为非1,那KBUILD_VERBOSE为非空,那if的判断条件为非空,那if的返回结果为else part部分,这里为@
2. origin函数
函数原型:$(origin <var>)
函数说明:<var>是变量名字,用于判断这个变量来自于哪里,
函数返回:1. <var>没有被定义,则返回"undefined"
2.<var>是使用make命令带进来的参数,则返回 "command line"
3.<var>如果是系统环境变量,则返回"environment"
4.<var>如果是"override"字符重定义的,则返回"override"
5.<var>是命令行中的自动化变量,则返回"automatic",比如$(origin @)