makefile ------ 常用函数
函数格式
notdir
notdir 函数用于去除文件路径中的目录部分
subst
是一个替换函数,这个函数有三个参数,第一个参数是被替换字符串,第二个参数是替换字符串,第三个参数是替换操作作用的字符串
$(subst .c,.o,test1.c test2.c)的意思就是:用.o替换test1.c test2.c中的.c,最终得到test1.o test2.o
wildcard
在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效(比如$(subst .c,.o,$(wildcard *.c)) )。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN…) 。
在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。如果不存在任何符合此模式的文件,函数会忽略模式字符并返回空。所以可以用来判断文件是否存在
// 判断文件是否存在
ifneq ($(TELINK_SDK_PATH)/make/Makefile, $(wildcard $(TELINK_SDK_PATH)/make/Makefile)) $(error "Please check if the TELINK_SDK_PATH is correct") endif
$(wildcar *.c) 获取工作目录下的所有的 .c 文件名列表
strip
格式:$(strip <string> )
功能:去掉<string>字串中开头和结尾的空字符,并将中间的多个连续空字符(如果有的话)合并为一个空字符。
返回:返回被去掉空格的字符串值。
说明:空字符包括 空格,tab等不可显示的字符
示例:
str1 := abc str2 := a b c all: @echo $(strip $(str1)) @echo $(strip $(str2))
输出结果:
abc
a b c
qstrip
qstrip=$(strip $(subst ",,$(1)))
去掉"号和多余的空格