$@ 表示目標檔案
$^ 表示所有的依賴檔案
$< 表示第乙個依賴檔案
$? 表示比目標還要新的依賴檔案列表
$+ 同樣表示所有依賴目標的集合(不去除重複的依賴目標)
makefile變數使用()
或者( )或
者{}來呼叫,如果是shell變數,則需要使用$$來引用。
一種變數替換方法:
src := a.c b.c
obj := $(src:%.o=%.c)
變數賦值方法:
= 基本的賦值
:= 覆蓋之前的值
?= 是如果沒有被賦值過就賦予等號後面的值(一般可用來設定預設值)
+= 追加變數
這裡需要注意=和:=的區別,:=賦值是從它在makefile中的位置處開始生效的,在它之前的變數還保持原有值,而=會以最後乙個賦值為準,並且之前的引用也會被更新。所以如果定義的變數是在makfile中會變化的,一定要使用:=。
需要注意:makefile 中萬用字元%表示所有的字元,不要和shell語法告混淆,shell 中萬用字元*表示所有的字元
subdir=src example
all:
@for subdir in $(subdir); \
do\echo
"building "; \
done
這裡在shell命令前加@符號,主要目的是不讓該條命令顯示在makefile中的編譯log中,當然該條指令依然會執行,只不過是「默默」的執行。
函式呼叫方式:
例如:$(wildcard *.c),常用函式如下:
wildcard : 擴充套件萬用字元
notdir : 去除路徑
patsubst :替換萬用字元
strip: 去空格
filter: 過濾
filter_out:反過濾
addprefix:加字首
addsuffix:加字尾
makefile編寫規則
目標 要生成的目標檔案 依賴 目標檔案由哪些檔案生成 命令 通過執行該命令由依賴檔案生成目標 代表目標 代表全部依賴 第一依賴 第一變化的依賴 2020 8 3 wildcard可以進行檔案匹配 patsubst 內容的替換 makefile的變數 代表目標 代表全部依賴 第一依賴 第一變化的依賴 ...
Makefile的常用語法 及 規則
1 wildcard 擴充套件萬用字元 2 notdir 去除路徑 3 patsubst 替換萬用字元 4 條件表示式的語法 例子 建立乙個測試目錄,在測試目錄下建立乙個名為sub的子目錄 mkdir test cd test mkdir sub 在test下,建立a.c和b.c 在sub目錄下,建...
Makefile的常用語法 及 規則
1 wildcard 擴充套件萬用字元 2 notdir 去除路徑 3 patsubst 替換萬用字元 4 條件表示式的語法 例子 建立乙個測試目錄,在測試目錄下建立乙個名為sub的子目錄 mkdir test cd test mkdir sub 在test下,建立a.c和b.c 在sub目錄下,建...