makefile 變數與 函式的綜合示例

2021-08-28 17:25:32 字數 2181 閱讀 2767

srcs += $(wildcard *.c)
objs := $(srcs:.c=.o)
objs := $(addprefix path/,$(objs))
本質:匹配當前目錄下的檔案,然後根據模式將當前目錄下的檔案進行特定替換前提:工作目錄中存在func.c main.c

說明:

%.o : %.c

gcc -o $@ -c $^

與變數的值替換的區別:變數值替換是從給定的列表中將檔案一一進行匹配,然後放入指定的依賴中;變數值替換如下所示:

objs := func.o main.o

$(objs) : %.o : %.c

gcc -o $@ -c $^

編譯規則的依賴如下:

示例**–變數與函式的綜合應用

源**如下:

執行結果如下:

下列左圖為命令列執行make debug:=true的結果;右圖為命令列執行make的結果;可以看到,當命令列指定deubg值之後,進入target資料夾後命令列執行objdump -s hello-makefile.out可以看到彙編除錯**中出現了原始檔中的**,方便進行除錯。而右圖僅僅只有彙編部分**。

makefile 變數與函式的綜合示例

srcs wildcard c 複製 objs srcs c o 複製 objs addprefix path objs 複製 本質 匹配當前目錄下的檔案,然後根據模式將當前目錄下的檔案進行特定替換前提 工作目錄中存在func.c main.c 說明 o c gcc o c 複製 與變數的值替換的區...

makefile專題 變數與函式的綜合示例

1 自動生成target資料夾存放可執行檔案 2 自動生成objs資料夾存放編譯生成的目標檔案 o 3 支援除錯版本的編譯選項 4 考慮 的擴充套件性 wildcard parrern 獲取當前工作目錄中滿足 pattern的檔案或目錄列表 addprefix prefix,names 給名字列表 ...

makefile編譯選項與常用變數

d 條件選擇編譯 i 標頭檔案搜尋路徑 l 連線靜態庫 l 連線庫的路徑 wall 開啟警告開關 ar 靜態庫打包命令的名字,預設值是ar。arflags 靜態庫打包的選項,預設值rv as 彙編器的名字,預設值是as。asflags 彙編器的選項,沒有定義。cc c編譯器的名字,預設值是cc。cf...