精簡的makefile示例分析

2022-01-28 13:44:57 字數 1677 閱讀 7192

1 make

make 是linux自帶的構建器,構建的規則在makefile檔案中

2 makefile檔名

makefile 或 makefile

3 makefile中的規則

目標:依賴

(tab縮排) 命令

4 makefile的編寫

工作原理:依賴不存在,就向下搜尋下面的規則,如果找到用來生成查詢依賴的規則,就執行規則中的命令;依賴存在,就判斷是否需要更新

第一版:改為多條規則如下,可以實現只有修改的檔案才重新編譯。

第二版:使用自定義變數,減少冗餘

a.自定義變數:

obj=a.o b.o c.o

obj=10

b.變數的取值:

aa=$(obj)

c. makefile自帶的變數:大寫

cppflags

ccd. 自動變數:只能在命令中使用

$@  :  規則中的目標

$$^  :  規則中的所有依賴

e. 模式匹配:

%.o:%.c

第三版:全部改為自定變數。

第四版:使用函式,實現makefile檔案在不同的專案中通用。makefile所有的函式都有返回值。

a.  查詢指定目錄下指定型別的檔案

src=$(wildcard ./*.c)

b. 匹配替換

obj=$(patsubst %.c, %.o, $(src))

第五版:新增清理專案功能。只需要新增乙個新的規則:clean即可,注意:clean應該名聲為偽目標。

a. 使用.phony宣告偽目標,如果clean不宣告為偽目標,並且目錄下有乙個檔名為clean的檔案,那麼make clean就永遠不會執行。

b. rm命令前面新增乙個 - 號,表示命令執行失敗時,繼續向下執行。

src=$(wildcard ./*.c)

obj=$(patsubst %.c, %.o, $(src))

$(target):$(obj)

gcc $^ -o $@

%.o:%.c

gcc -c $< -o $@

.phony:clean

clean:

-rm $(obj) $(target) -f

makefile語法示例

edit main.o kbd.o cc o edit main.o kdb.o main.o main.c defs.h cc c main.c kbd.o kbd.c defs.h command.h cc c kbd.c clean rm o edit makefile中使用變數 object...

Makefile示例學習

裸機程式中的makefile是把程式的編譯和鏈結過程分開的,編譯要使用編譯器gcc,鏈結使用鏈結器ld 示例 led.bin start.o arm linux ld ttext 0x0 o led.elf arm linux objcopy o binary led.elf led.bin arm...

makefile寫法簡單示例

作為linux或unix下的程式開發人員,大家一定都遇到過makefile,用make命令來編譯自己寫的程式確實是很方便。一般開發情況下,大家都是手工寫乙個簡單makefile。下面先給乙個最簡單的示例 makefile示例 object main.o function.o change objec...