Makefile常用規則

2021-08-21 18:59:00 字數 1072 閱讀 6858

$@  表示目標檔案

$^ 表示所有的依賴檔案

$< 表示第乙個依賴檔案

$? 表示比目標還要新的依賴檔案列表

$+ 同樣表示所有依賴目標的集合(不去除重複的依賴目標)

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目錄下,建...