9.7Makefile函數(shù)

視頻教程??
韋東山升級(jí)版全系列嵌入式免費(fèi)視頻_快速入門篇
makefile 里面可以包含很多函數(shù),這些函數(shù)都是make本身實(shí)現(xiàn)的,下面我們來(lái)幾個(gè)常用的函數(shù)。
引用一個(gè)函數(shù)用“$”。
函數(shù)foreach
函數(shù)foreach語(yǔ)法如下:
$(foreach var,list,text)
前兩個(gè)參數(shù),‘var’和‘list’,將首先擴(kuò)展,注意最后一個(gè)參數(shù)‘text’此時(shí)不擴(kuò)展;接著,對(duì)每一個(gè)‘list’擴(kuò)展產(chǎn)生的字,將用來(lái)為‘var’擴(kuò)展后命名的變量賦值;然后‘text’引用該變量擴(kuò)展;因此它每次擴(kuò)展都不相同。結(jié)果是由空格隔開的‘text’ 在‘list’中多次擴(kuò)展的字組成的新的‘list’。‘text’多次擴(kuò)展的字串聯(lián)起來(lái),字與字之間由空格隔開,如此就產(chǎn)生了函數(shù)foreach的返回值。
實(shí)例:?

結(jié)果:
B = a.o b.o c.o
函數(shù)filter/filter-out
函數(shù)filter/filter-out語(yǔ)法如下:?
$(filter pattern...,text)? ? ? # 在text中取出符合patten格式的值
$(filter-out pattern...,text)? # 在text中取出不符合patten格式的值
實(shí)例:?

結(jié)果:
D = d/?
E = a b c
Wildcard
函數(shù)Wildcard語(yǔ)法如下:?
$(wildcard pattern) ?# pattern定義了文件名的格式, wildcard取出其中存在的文件
這個(gè)函數(shù)wildcard會(huì)以pattern這個(gè)格式,去尋找存在的文件,返回存在文件的名字。
實(shí)例:
在該目錄下創(chuàng)建三個(gè)文件:a.c ?b.c ?c.c?

結(jié)果:
files = a.c b.c c.c
我們也可以用wildcard函數(shù)來(lái)判斷,真實(shí)存在的文件?
實(shí)例:?

結(jié)果:
files3 = a.c b.c c.c
patsubst函數(shù)
函數(shù)patsubst語(yǔ)法如下:?
$(patsubst pattern,replacement,$(var))
patsubst函數(shù)是從var變量里面取出每一個(gè)值,如果這個(gè)符合pattern格式,把它替換成replacement格式。
實(shí)例:?

結(jié)果:?
dep_files = a.d b.d c.d d.d e.d abc
視頻教程??
韋東山升級(jí)版全系列嵌入式免費(fèi)視頻_快速入門篇
