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...