subst字符串替換函數(shù)
$(subst , , ),把中的字符串替換成,返回被替換過(guò)的字符串
SRC:=/mnt/hgfs/share/123DES:=$(subst /mnt,/root,$(SRC)) #ATTENTION:是,/root不是, /rootall: @echo $(SRC) @echo $(DES)/mnt/hgfs/share/123/root/hgfs/share/123
patsubst模式字符串替換函數(shù)
$(patsubst , , )
,查找中的單詞(單詞以 空格,Tab,回車 分隔)是否符合模式,符合的話,則以替換,這里,可以包括通配符 % 表示任意長(zhǎng)度的字符串,如果中也包含 %, 則 中的這個(gè) % 將是 中的那個(gè) % 所代表的字符串
SRC:=/mnt/hgfs/share/123DES:=$(patsubst %/123,%/456,$(SRC))all: @echo $(SRC) #Note:shell可不支持@ @echo $(DES)/mnt/hgfs/share/123/mnt/hgfs/share/456
strip
$(strip a b c)把字符串去掉開頭和結(jié)尾的空格,結(jié)果是 “a b c”
DES:=$(strip 12,43 ) #參數(shù)字符串是從1開始的,能去掉最后一個(gè)空格DES:=$(strip “ 12,43 ”) #參數(shù)字符串是從空格開始的,能去掉最后一個(gè)空格all: @echo $(DES)/mnt/hgfs/share/123 12,43
findstring查找字符串函數(shù)
$(findstring , ),在字符串中查找,如果找到,就返回,否則返回空
SRC:=/mnt/hgfs/share/123DES:=$(findstring /mnt,$(SRC))all: @echo $(SRC) @echo $(DES)/mnt/hgfs/share/123/mnt
filter過(guò)濾函數(shù)
$(filter , ),以模式過(guò)濾字符串的單詞,保留模式的單詞,可以有多個(gè)
SRC:= 123.c 789.c 456.s eee.j#DES:=$(filter %.c,%.s,$(SRC)) #WRONG?。?!DES:=$(filter %.c %.s,$(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j123.c 789.c 456.s
filter-out反過(guò)濾函數(shù)
$(filter-out ,)
,以模式過(guò)濾字符串的單詞,去除模式的單詞,可以有多個(gè)
SRC:= 123.c 789.c 456.s eee.jDES:=$(filter-out %.c,$(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j456.s eee.j
sort排序函數(shù)
$(sort ),給字符串中的單詞(不是字符)按升序排序
SRC:= 123.c 789.c 456.s eee.jDES:=$(sort $(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j123.c 456.s 789.c eee.j
word
$(word ,)取單詞函數(shù),取字符串中的第個(gè)單詞,返回字符串中的第n個(gè)單詞,如果n比中的單詞要大,那么返回空字符串
SRC:= 123.c 789.c 456.s eee.jDES:=$(word 2,$(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j789.c
wordlist取單詞串函數(shù)
$(wordlist , , )
,從字符串中取從開始到的單詞串,和是一個(gè)數(shù)字,返回取出的單詞串,如果s大于,那么返回空,如果e大于,則返回從s開始到結(jié)尾的字符串
SRC:= 123.c 789.c 456.s eee.jDES:=$(wordlist 2,4,$(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j789.c 456.s eee.j
words單詞個(gè)數(shù)統(tǒng)計(jì)函數(shù)
$(words ),返回單詞數(shù)
SRC:= 123.c 789.c 456.s eee.jDES:=$(words $(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j4
firstword首單詞函數(shù)
$(firstword ),返回的第一個(gè)單詞
SRC:= 123.c 789.c 456.s eee.jDES:=$(firstword $(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j123.c
dir取目錄函數(shù)
$(dir ),從每個(gè)name中取出目錄部分,返回文件所在目錄,如果沒(méi)有/,則返回。/
SRC:=/mnt/hgfs/share/123DES:=$(dir $(SRC))all: @echo $(SRC) @echo $(DES)/mnt/hgfs/share/123/mnt/hgfs/share/
notdir取文件函數(shù)
$(notdir ),從每個(gè)name中取出文件部分,返回文件名,如果沒(méi)有文件,返回空。這里的name必須是變量名,不能是變量的內(nèi)容,否則什么都不會(huì)返回
SRC:=/mnt/hgfs/share/123DES:=$(notdir $(SRC))all: @echo $(SRC) @echo $(DES)/mnt/hgfs/share/123123
suffix取后綴函數(shù)
$(suffix ),從文件名序列中取出各個(gè)文件的后綴,返回后綴,如果沒(méi)有后綴,返回空
SRC:= 123.c 789.c 456.s eee.jDES:=$(suffix $(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j.c .c .s .j
basename取前綴函數(shù)
$(basename ),從文件名序列中取出各個(gè)文件的前綴,返回前綴,如果沒(méi)有前綴,返回空
SRC:= 123.c 789.c 456.s eee.jDES:=$(basename $(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j123 789 456 eee
addsuffix
$(addsuffix , )加后綴函數(shù)
,將后綴加到中每個(gè)單詞的后面,返回加過(guò)后綴的文件名序列
SRC:= 123.c 789.c 456.s eee.jDES:=$(addsuffix _suf,$(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j123.c_suf 789.c_suf 456.s_suf eee.j_suf
addprefix
$(addprefix , )加前綴函數(shù)
,將前綴加到中每個(gè)單詞的后面,返回加過(guò)前綴的文件名序列
SRC:= 123.c 789.c 456.s eee.jDES:=$(addprefix prf_,$(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.jprf_123.c prf_789.c prf_456.s prf_eee.j
join
$(join , )連接函數(shù)
,把中的單詞對(duì)應(yīng)的加到的單詞的后面,如果中的單詞更多,則多出來(lái)的單詞保持原樣,如果的單詞個(gè)數(shù)更多,那么多出來(lái)的被復(fù)制到中
SRC:= 123.c 789.c 456.s eee.jSRCJOIN:= q e r t y uDES:=$(join $(SRC),$(SRCJOIN))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j123.cq 789.ce 456.sr eee.jt y u
foreach
$(foreach , , )
把中的單詞逐一取出放到參數(shù)所制定的變量中,然后再執(zhí)行所包含的表達(dá)式,循環(huán)過(guò)程中,所返回的每個(gè)字符串會(huì)以空格分隔,最后當(dāng)整個(gè)循環(huán)結(jié)束時(shí),所返回的每個(gè)字符串所組成的整個(gè)字符串(以空格分隔)將會(huì)是foreach函數(shù)的返回值
if
$(if , )
$(if , ,)
返回非0即為真
call創(chuàng)建函數(shù)的函數(shù)
$(call , , , …)
origin確定變量的出身
$(origin )
,返回值有 “undefined”, “default”, “environment”, “file”, “command line”, “override” , “automatic”
shell
$(shell )或$()
參數(shù)是一個(gè)shell命令
error
$(error )
錯(cuò)誤生成函數(shù),是錯(cuò)誤信息
評(píng)論