Make File符號說明

2021-05-03 21:56:47 字數 2737 閱讀 8744

用途define

定義乙個「資料報」,是用enddef做結尾,可以包含多行的命令。

ifeq/ifneq

條件判斷,可以搭配else使用,endif結尾。原型:ifeq(arg1,arg2)。

ifdef/ifndef

變數是否定義的條件判斷,可以搭配else使用,endif結尾。原型:ifdef var。=

變數賦值語句。如果右值包含另乙個變數,則可以在後面定義這個變數。:=

變數賦值語句。如果右值包含另乙個變數,則只能引用已定義的變數。?=

條件賦值語句。如果此變數未定義才重新賦值。+=

為當前變數追加內容。%

萬用字元vpath

設定搜尋路徑,原型vpath %.x ,x表示副檔名/

換行符@

放在命令前面隱藏命令輸出-

放在命令前面忽略命令錯誤:

依賴規則定義符,使用方式:目標:依賴

override

用來指示即便此變數是由make的命令列引數設定的,也使用新的賦值。因為預設情況下makefile中對這個變數的賦值會被忽略。

.phony

顯式宣告偽目標

.suffixes

宣告副檔名

函式原型

描述$(subst ,,)

把字串中的字串替換成。

$(patsubst ,,)

查詢中的單詞(單詞以「空格」、「tab」或「回車」「換行」分隔)是否符合模式,如果匹配的話,則以替換。這裡,可以包括萬用字元「%」,表示任意長度的字串。如果中也包含「%」,那麼,中的這個「%」將是中的那個「%」所代表的字串。(可以用「/」來轉義,以「/%」來表示真實含義的「%」字元)

$(strip )

去掉字串中開頭和結尾的空字元。

$(findstring ,)

在字串中查詢字串。

$(filter ,)

以模式過濾字串中的單詞,保留符合模式的單詞。可以有多個模式。

$(filter-out ,)

以模式過濾字串中的單詞,去除符合模式的單詞。可以有多個模式。

$(sort )

給字串中的單詞排序(公升序)。

$(word ,)

取字串中第個單詞。(從一開始)

$(wordlist ,,)

從字串中取從開始到的單詞串。和是乙個數字。

$(words )

統計中字串中的單詞個數。

$(firstword )

取字串中的第乙個單詞。

$(dir )

從檔名序列中取出目錄部分。目錄部分是指最後乙個反斜槓(「/」)之前的部分。如果沒有反斜槓,那麼返回「./」。

$(notdir )

從檔名序列中取出非目錄部分。非目錄部分是指最後乙個反斜槓(「/」)之後的部分。

$(suffix )

從檔名序列中取出各個檔名的字尾。

$(basename )

從檔名序列中取出各個檔名的字首部分。

$(addsuffix ,)

把字尾加到中的每個單詞後面。

$(addprefix ,)

把字首加到中的每個單詞後面。

$(join ,)

把中的單詞對應地加到的單詞後面。如果的單詞個數要比的多,那麼,中的多出來的單詞將保持原樣。如果的單詞個數要比多,那麼,多出來的單詞將被複製到中。

$(foreach ,,)

把引數中的單詞逐一取出放到引數所指定的變數中,然後再執行所包含的表示式。每一次會返回乙個字串,迴圈過程中,的所返回的每個字串會以空格分隔,最後當整個迴圈結束時,所返回的每個字串所組成的整個字串(以空格分隔)將會是foreach函式的返回值。

$(if ,)

$(if ,,),引數是if的表示式,如果其返回的為非空字串,那麼這個表示式就相當於返回真,於是,會被計算,否則會被計算。

$(call ,,,...)

call函式是唯一乙個可以用來建立新的引數化的函式。我們可以寫乙個非常複雜的表示式,這個表示式中,我們可以定義許多引數,然後我們可以用call函式來向這個表示式傳遞引數。當make執行這個函式時,引數中的變數,如$(1),$(2),$(3)等,會被引數,,依次取代。而的返回值就是call函式的返回值。

$(origin )

origin函式不像其它的函式,他並不操作變數的值,他只是告訴我們這個變數是**來的。是變數的名字,不應該是引用。所以我們最好不要在中使用「$」字元。origin函式會以其返回值來告訴我們這個變數的「出生情況」,下面,是origin函式的返回值:

「undefined」

如果從來沒有定義過,origin函式返回這個值「undefined」。

default」

如果是乙個預設的定義,比如「cc」這個變數,這種變數我們將在後面講述。

「environment」

如果是乙個環境變數,並且當makefile被執行時,「-e」引數沒有被開啟。

file」

如果這個變數被定義在makefile中。

「command line」

如果這個變數是被命令列定義的。

「override」

如果是被override指示符重新定義的。

「automatic」

如果是乙個命令執行中的自動化變數。

$(error )

產生乙個致命的錯誤,是錯誤資訊。退出make執行。

$(warning )

輸出一段警告資訊,而make繼續執行。

$(shell )

使用shell執行命令

Make File符號說明

用途 define 定義乙個 資料報 是用enddef做結尾,可以包含多行的命令。ifeq ifneq 條件判斷,可以搭配else使用,endif結尾。原型 ifeq arg1,arg2 ifdef ifndef 變數是否定義的條件判斷,可以搭配else使用,endif結尾。原型 ifdef var...

Make File符號說明

用途 define 定義乙個 資料報 是用enddef做結尾,可以包含多行的命令。ifeq ifneq 條件判斷,可以搭配else使用,endif結尾。原型 ifeq arg1,arg2 ifdef ifndef 變數是否定義的條件判斷,可以搭配else使用,endif結尾。原型 ifdef var...

MakeFile 幾個符號說明

編譯 時,會程序接觸makefile,會涉及到一些符號,由於不明白有些意思經常出現問題,在此歸納一下。符號的使用 通常makefile會將其執行的命令列在執行前輸出到螢幕上。如果將 新增到命令行前,這個命令將不被make回顯出來。例如 echo compiling module 螢幕輸出 compi...