patsubst函数:
功能:查找text中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式pattern,如果匹配的话,则以replacement替换。
这里,pattern可以包括通配符“%”,表示任意长度的字串。如果replacement中也包含“%”,那么,replacement中的这个“%”将是pattern中的那个“%”所代表的字串。(可以用“\”来转义,以“%”来表示真实含义的“%”字符)。
例如:INCDIRS := imx6ul bsp/clk bsp/led bsp/delay
INCLUDE := $(patsubst %, -I %, $(INCDIRS))
效果:INCDIRS :=-I imx6ul -I bsp/clk -I bsp/led -I bsp/delay
wildcard函数:
功能:$(wildcard PATTERN),获取匹配 PATTERN 的所有对象,返回值为当前目录下匹配PATTERN条件的使用空格作为间隔的列表。
例如:SRC = $(wildcard *.c),获取当前目录下的.c文件并以空格为间隔。
foreach函数:
功能:Makefile常用循环函数,函数常用格式: $(foreach var, list, text),该函数从list参数中逐一取出var参数中,然后执行text表达式,每次返回一个字符串,最后返回值为以空格为间隔的之前单次循环的所有字符串集合。
例如:SRCDIRS := project bsp/clk bsp/led bsp/delay
SFILES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.S))
效果:将SRCDIRS中的元素逐一读出到dir,然后执行$(wildcard $(dir)/*.S)),最终效果就是将SRCDIRS中的所有.S文件读出并以空格间隔