一、字串處理函式
1.$(subst from,to,text)
函式名稱:字串替換函式—subst。
函式功能:把字串「text」中的「from」字元替換為「to」。
返回值:替換後的新字串。
2.$(patsubst pattern,replacement,text)
函式名稱:模式替換函式—patsubst。
函式功能:搜尋「text」中以空格分開的單詞,將否符合模式「tattern」替換為「replacement」。引數「pattern」中可以使用模式萬用字元「%」來代表乙個單詞中的若干字元。如果引數「replacement」中也包含乙個「%」,那麼「replacement」中的「%」將是 「tattern」中的那個「%」所代表的字串。在「tattern」和「replacement」中,只有第乙個「%」被作為模式字元來處理,後續的作為字元本上來處理。在兩個引數中當使用第乙個「%」本是字元本身時,可使用反斜槓「\」對它進行轉義處理。
返回值:替換後的新字串。
函式說明:引數「text」單詞之間的多個空格在處理時被合併為乙個空格,但前導和結尾空格忽略。
3.$(strip strint)
函式名稱:去空格函式—strip。
函式功能:去掉字串(若干單詞,使用若干空字元分割)「strint」開頭和結尾的空字元,並將其中多個連續空字元合併為乙個空字元。
返回值:無前導和結尾空字元、使用單一空格分割的多單詞字串。
函式說明:空字元包括空格、[tab]等不可顯示字元。
4.$(findstring find,in)
函式名稱:查詢字串函式—findstring。
函式功能:搜尋字串「in」,查詢「find」字串。
返回值:如果在「in」之中存在「find」,則返回「find」,否則返回空。
函式說明:字串「in」之中可以包含空格、[tab]。搜尋需要是嚴格的文字匹配。
5.$(filter pattern…,text)
函式名稱:過濾函式—filter。
函式功能:過濾掉字串「text」中所有不符合模式「pattern」的單詞,保留所有符合此模式的單詞。可以使用多個模式。模式中一般需要包含模式字元「%」。存在多個模式時,模式表示式之間使用空格分割。
返回值:空格分割的「text」字串中所有符合模式「pattern」的字串。
函式說明:「filter」函式可以用來去除乙個變數中的某些字串,我們下邊的例子中就是用到了此函式。
6.$(filter-out pattern...,text)
函式名稱:反過濾函式—filter-out。
函式功能:和「filter」函式實現的功能相反。過濾掉字串「text」中所有符合模式「pattern」的單詞,保留所有不符合此模式的單詞。可以有多個模式。存在多個模式時,模式表示式之間使用空格分割。。
返回值:空格分割的「text」字串中所有不符合模式「pattern」的字串。
函式說明:「filter-out」函式也可以用來去除乙個變數中的某些字串,(實現和「filter」函式相反)。
7.$(sort list)
函式名稱:排序函式—sort。
函式功能:給字串「list」中的單詞以首字母為準進行排序(公升序),並取掉重複的單詞。
返回值:空格分割的沒有重複單詞的字串。
函式說明:兩個功能,排序和去字串中的重複單詞。可以單獨使用其中乙個功能。
8.$(word n,text)
函式名稱:取單詞函式—word。
函式功能:取字串「text」中第「n」個單詞(「n」的值從1開始)。
返回值:返回字串「text」中第「n」個單詞。
函式說明:如果「n」值大於字串「text」中單詞的數目,返回空字串。如果「n」為0,出錯!
9.$(wordlist s,e,text)
函式名稱:取字串函式—wordlist。
函式功能:從字串「text」中取出從「s」開始到「e」的單詞串。「s」和「e」表示單詞在字串中位置的數字。
返回值:字串「text」中從第「s」到「e」(包括「e」)的單詞字串。
函式說明:「s」和「e」都是從1開始的數字。
當「s」比「text」中的字數大時,返回空。如果「e」大於「text」字數,返回從「s」開始,到「text」結束的單詞串。如果「s」大於「e」,返回空。
10.$(words text)
函式名稱:統計單詞數目函式—words。
函式功能:字算字串「text」中單詞的數目。
返回值:「text」字串中的單詞數。
11.$(firstword names…)
函式名稱:取首單詞函式—firstword。
函式功能:取字串「names…」中的第乙個單詞。
返回值:字串「names…」的第乙個單詞。
函式說明:「names」被認為是使用空格分割的多個單詞(名字)的序列。函式忽略「names…」中除第乙個單詞以外的所有的單詞。
二、檔名處理函式
1.$(dir names…)
函式名稱:取目錄函式—dir。
函式功能:從檔名序列「names…」中取出各個檔名目錄部分。檔名的目錄部分就是包含在檔名中的最後乙個斜線(「/」)(包括斜線)之前的部分。
返回值:空格分割的檔名序列「names…」中每乙個檔案的目錄部分。
函式說明:如果檔名中沒有斜線,認為此檔案為當前目錄(「./」)下的檔案。
2.$(notdir names…)
函式名稱:取檔名函式——notdir。
函式功能:從檔名序列「names…」中取出非目錄部分。目錄部分是指最後乙個斜線(「/」)(包括斜線)之前的部分。刪除所有檔名中的目錄部分,只保留非目錄部分。
返回值:檔名序列「names…」中每乙個檔案的非目錄部分。
函式說明:如果「names…」中存在不包含斜線的檔名,則不改變這個檔名。以反斜線結尾的檔名,是用空串代替,因此當「names…」中存在多個這樣的檔名時,返回結果中分割各個檔名的空格數目將不確定!這是此函式的乙個缺陷。
3.$(suffix names…)
函式名稱:取字尾函式—suffix。
函式功能:從檔名序列「names…」中取出各個檔名的字尾。字尾是檔名中最後乙個以點「.」開始的(包含點號)部分,如果檔名中不包含乙個點號,則為空。
返回值:以空格分割的檔名序列「names…」中每乙個檔案的字尾序列。
函式說明:「names…」是多個檔名時,返回值是多個以空格分割的單詞序列。如果檔名沒有字尾部分,則返回空。
4.$(basename names…)
函式名稱:取字首函式—basename。
函式功能:從檔名序列「names…」中取出各個檔名的字首部分(點號之後的部分)。字首部分指的是檔名中最後乙個點號之前的部分。
返回值:空格分割的檔名序列「names…」中各個檔案的字首序列。如果檔案沒有字首,則返回空字串。
函式說明:如果「names…」中包含沒有字尾的檔名,此檔名不改變。如果乙個檔名中存在多個點號,則返回值為此檔名的最後乙個點號之前的檔名部分。
5.$(addsuffix suffix,names…)
函式名稱:加字尾函式—addsuffix。
函式功能:為「names…」中的每乙個檔名新增字尾「suffix」。引數「names…」為空格分割的檔名序列,將「suffix」追加到此序列的每乙個檔名的末尾。
返回值:以單空格分割的新增了字尾「suffix」的檔名序列。
6.$(addprefix prefix,names…)
函式名稱:加字首函式—addprefix。
函式功能:為「names…」中的每乙個檔名新增字首「prefix」。引數「names…」是空格分割的檔名序列,將「suffix」新增到此序列的每乙個檔名之前。
返回值:以單空格分割的新增了字首「prefix」的檔名序列。
7.$(join list1,list2)
函式名稱:單詞連線函式——join。
函式功能:將字串「list1」和字串「list2」各單詞進行對應連線。就是將「list2」中的第乙個單詞追加「list1」第乙個單詞字後合併為乙個單詞;將「list2」中的第二個單詞追加到「list1」的第乙個單詞之後並合併為乙個單詞,……依次列推。
返回值:單空格分割的合併後的字(檔名)序列。
函式說明:如果「list1」和「list2」中的字數目不一致時,兩者中多餘部分將被作為返回序列的一部分。
8.$(wildcard pattern)
函式名稱:獲取匹配模式檔名函式—wildcard
函式功能:列出當前目錄下所有符合模式「pattern」格式的檔名。
返回值:空格分割的、存在當前目錄下的所有符合模式「pattern」的檔名。
函式說明:「pattern」使用shell可識別的萬用字元,包括「?」(單字元)、「*」(多字元)等。
Makefile 常用函式
1.strip 去空格函式 刪除字串開頭和結尾的空格 2.比較函式ifeq 和ifneq ifeq是當相等時繼續執行,ifneq 當不等是繼續執行。ifneq strip target vendor target vendor 去除空格後不為空,product list target product...
Makefile常用函式
單詞以 空格 tab 或 回車 換行 分隔 info 列印資訊。warning 列印警告資訊。error 答應錯誤資訊並停止make。shell 返回值是shell命令的標準輸出。call 建立新的引數化的函式。eval 將的內容作為makefile的一部分而被make解析和執行。sort 給字串中...
Makefile常用函式
makefile 中函式的呼叫格式如下 function arguments 其中,function 為函式名,arguments 為引數。函式名與引數之間由空格或tab分隔,如果有多個引數,這些引數之間由逗號分隔。核心的 makefile 中用到大量的函式,以下介紹一些常用的函式。其中,subst...