记录一下makefile中常用的函数和关键字:
Makefile学习之路(3) — Makefile的函数_makefile findstring_Willliam_william的博客-CSDN博客
makefile中函数的调用格式为:
$(function argument1, argument2, argument3)
其中的function为函数名,argument是参数,函数名与参数之间用空格或者Tab隔开,如果有多个参数,之间用逗号隔开。
关键字 | 功能 | |
ifeq | 判断是否相等,相等则为true | |
ifneq | 判断是否不相等,不相等则为true | |
ifdef | 判断是否有值,有值则为true | |
ifndef | 判断是否没有值,没有值则为true |
$(wildcard pattern)
查找pattern中指定的【目录+文件名】若不写目录则默认为当前目录,在函数名与参数之间用空格隔开就行
A = $(wildcard dir/*.c dir/*.o)
all:
@echo A = $(A)
$(patsubst pattern,replacement,text)
对于text
中每一个用空格隔开的值,将取出后,如果这个符合pattern
的格式,就把它替换成 replacement
格式,然后将这些值用空格连接起来后作为函数的返回值;
A = a.c b.c c.bin d.c e.c abc
B = $(patsubst %.c,%.o,$(A))
all:
@echo B = $(B)
字符串替换和分析函数
$(subst from,to,text)
对于text
字符串中每一个from
字符(串),替换为to
字符(串),然后作为函数的返回值;
A = a.c b.c c.bin d.c e.c abc
B = $(subst c,o, $(A))
all:
@echo A = $(A)
@echo B = $(B)
$(strip string)
去掉string中前面和结尾的空格,将中间的多个空格压缩为单个空格
A = " a.c b.c c.bin d.c e.c abc"
B = $(strip $(A))
all:
@echo A = $(A)
@echo B = $(B)
$(findstring find,in)
在字符串in
中搜寻find
字符(串),如果找到,则返回find
字符(串),否则返回值为空。
A = a.c b.c c.bin d.c e.c abc
B = $(findstring c.bin, $(A))
all:
@echo A = $(A)
@echo B = $(B)
7、filter
$(filter pattern1 pattern2 pattern3, text)
对于text
中每一个用空格隔开的值,依次取出后,找到符合格式pattern
格式(可以有多种格式,用空格隔开)的值,然后将这些值用空格连接起来后作为函数的返回值
A = a.c b.o c.s d/ e.bin
B = $(filter %.s %/ %.c, $(A))
all:
@echo B = $(B)