filter 函数
filter函数用来过滤掉一个指定的字符串,使用格式如下:
$(filter PATTERN…,TEXT)
filter函数用来过滤掉字符串TEXT中所有不符合PATTERN模式的单词,只留下符合PATTERN格式的单词。
.PHONY: all
FILE = a.c b.h c.s d.cpp
SRC = $(filter %.c, $(FILE))
all:
@echo "FILE = $(FILE)"
@echo "SRC = $(SRC)"
结果:
# make
FILE = a.c b.h c.s d.cpp
SRC = a.c
filter-out 函数
filer-out函数是一个反过滤函数,功能和filter函数恰恰相反:该函数会过滤掉所有符合PATTERN模式的单词,保留所有不符合此模式的单词。
.PHONY: all
FILE = a.c b.h c.s d.cpp
SRC = $(filter-out %.c, $(FILE))
all:
@echo "FILE = $(FILE)"
@echo "SRC = $(SRC)"
在上面的Makefile中,使用filter-out %.c 过滤掉所有的.c文件。执行make,运行结果为:
# make
FILE = a.c b.h c.s d.cpp
SRC = b.h c.s d.cpp