foreach
$(foreach var, text, commond)
var:局部变量
text:文件列表,空格隔开,每一次取一个值赋值为变量var
commond:对var变量进行操作,每次操作结果都会以空格隔开,最后返回空格隔开的列表
subst
$(subst FROM,TO,TEXT)
将字符串TEXT中的FROM替换为TO,返回替换后的新字符串
举例:
SRCS = a.c b.c c.c
OBJS = $(subst .c,.o,$(SRCS))
OBJS的值为 a.o b.o c.o
patsubst
$(patsubst PATTERN,REPLACEMENT,TEXT)
将TEXT中符合模式PATTERN的单词替换为REPLACEMENT
举例:
SRCS = a.c b.c c.c
OBJS = $(patsubst %.c,%.o,$(SRCS ))
OBJS的值为 a.o b.o c.o
SRCS = a.c b.c c.c
OBJS = $(patsubst %.c,ABC,$(SRCS ))
OBJS的值为 ABC ABC ABC
strip
$(strip TEXT)
去掉字符串TEXT开头和结尾的空字符,并将字符串中的多个连续空字符合并为一个空字符。
举例:
TEXT = a b c
STR = $(strip TEXT)
STR的值为a b c
findstring
$(findstring FIND,TEXT)
在字符串TEXT中,查找FIND,找到则返回FIND,否则返回空。
举例:
TEXT = a b ccc
RST = $(findstring a,TEXT)
RST的值为a
TEXT = a b ccc
RST = $(findstring d,TEXT)
RST的值为空
filter
$(filter PATTERN, TEXT)
保留TEXT中符合PATTERN模式的字符串
举例:
SRCS = a.c b.c a.h b.h c.so
RST = $(filter %.c, $(SRCS))
RST的值为a.c b.c
filter-out
$(filter-out PATTERN, TEXT)
反过滤函数,保留不符合PATTERN模式的字符串
举例:
SRCS = a.c b.c a.h b.h c.so
RST = $(filter-out %.c, $(SRCS))
RST的值为a.h b.h c.so
sort
$(sort TEXT)
排序函数,给TEXT中单词以首字母为准进行排序,并去掉重复的单词
举例:
SRCS = the biggest fear is fear itself
RST = $(sort $(SRCS))
RST的值为:biggest fear is itself the
word
$(word N, TEXT)
取字符串TEXT中第N个单词,N从1开始
举例:
SRCS = the biggest fear is fear itself
RST = $(word 2, $(SRCS))
RST的值为biggesst
wordlist
$(word M, N, TEXT)
取字符串TEXT中第M到底N的单词
举例:
SRCS = the biggest fear is fear itself
RST = $(wordlist 2,3, $(SRCS))
RST的值为biggesst fear
words
$(words TEXT)
统计单词数目
举例:
SRCS = the biggest fear is fear itself
RST = $(words $(SRCS))
RST的值为 6
firstword
$(firstword TEXT)
取字符串TEXT中的第一个单词
举例:
SRCS = the biggest fear is fear itself
RST = $(firstword $(SRCS))
RST的值为 the
dir
$(dir NAMES)
从文件名序列NAMES中取出文件名的目录部分(文件名之前的部分)
举例:
SRCS = a.c a.h code/test/b.c
RST = $(dir $(SRCS))
RST的值为./ ./ code/test/
notdir
$(notdir NAMES)
从文件名序列NAMES中取出文件名
举例:
SRCS = a.c a.h code/test/b.c
RST = $(notdir $(SRCS))
RST的值为 a.c a.h b.c
suffix
$(suffix NAMES)
从文件名序列NAMES中取出各个文件名的后缀。
举例:
SRCS = a.c a.h abc
RST = $(suffix $(SRCS))
RST的值为.c .h
basename
$(basename NAMES)
从文件名序列NAMES中取出文件名的前缀
举例:
SRCS = a.c a.h code/test/b.c
RST = $(basename $(SRCS))
RST的值为 a a code/test/b
addsuffix
$(addsuffix SUFFIX,NAMES)
向文件名序列NAMES中各个文件名添加后缀SUFFIX
举例:
SRCS = a b abc
RST = $(addsuffix .c,$(SRCS))
RST的值为a.c b.c abc.c
addprefix
$(addprefix PREFIX,NAMES)
向文件名序列NAMES中各个文件名添加前缀PREFIX
举例:
SRCS = a.c b.c abc.c
RST = $(addprefix src/,$(SRCS))
RST的值为src/a.c src/b.c src/abc.c
join
$(join LIST1,LIST2)
将字符串LIST1与LIST2各单词对应拼接
举例:
RST = $(join a b,.c .o)
RST的值为a.c b.o
wildcard
$(wildcard PATTERN)
获取当前目录下所有符合模式PATTERN格式的文件名
举例:
$(wildcard *.c)
返回当前目录下所有.c源文件列表