- foreach:
例子:$(foreach var,list,text)
执行结果:A = a b c B = $(foreach f, $(A), $(f).o) all: @echo B = $(B)
- filter: #在text中取出附和patten格式的值
fileter-out:#在text中取出不符合patten格式的值
例子:$(filter pattern…,text) $(filter-out pattern…,text)
执行结果:A = a b c B = $(foreach f, $(A), $(f).o) C = a b c d/ D = $(filter %/, $(C)) E = $(filter-out %/, $(C)) all: @echo B = $(B) @echo D = $(D) @echo E = $(E)
- wildcard: #pattern定义了文件名的格式,wildcard取出其中存在的文件
$(wildcard pattern)
执行结果:A = a b c B = $(foreach f, $(A), $(f).o) C = a b c d/ D = $(filter %/, $(C)) E = $(filter-out %/, $(C)) files = $(wildcard *.c) files2 = a.c b.c c.c d.c e.c files3 = $(wildcard $(files2)) all: @echo B = $(B) @echo D = $(D) @echo E = $(E) @echo files = $(files) @echo files3 = $(files3)
- patsubst # 从var里的每个符合pattern格式的文件替换为replacement格式的文件
$(patsubst pattern,replacement,$(var))
执行结果:A = a b c B = $(foreach f, $(A), $(f).o) C = a b c d/ D = $(filter %/, $(C)) E = $(filter-out %/, $(C)) files = $(wildcard *.c) files2 = a.c b.c c.c d.c e.c abc files3 = $(wildcard $(files2)) dep_files = $(patsubst %.c,%.d,$(files2)) all: @echo B = $(B) @echo D = $(D) @echo E = $(E) @echo files = $(files) @echo files3 = $(files3) @echo dep_files = $(dep_files)
Makefile函数
最新推荐文章于 2022-01-24 16:56:13 发布