makefile常用函式

2021-06-11 02:20:53 字數 4332 閱讀 5747

一、字串處理函式

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...