[本文為學習筆記,僅供參考,如有好的建議歡迎指出!]
makefile規則:
目標檔案:依賴檔案
[tab] 命令 //命令前必須有乙個tab
exp:
test:main.c
gcc main.c -o test
隱式規則:
%.o :%.c // 『%』 同名匹配
變數--類似於c中的巨集,引用方式$(arg)
變數名 = 值 (引用變數可在之後定義)
exp:
a = $(b)
b = hello
output:
echo $(a)
result: hello
變數名 := 值 (立即對引用賦值)
exp:
a = $(b)
b = hello
output:
echo $(a)
result: (空)
變數名 += 值 (追加賦值)
exp:
a = $(b)
b = hello
a += world
output:
echo $(a)
result: hello world
變數名 ?= 值 (若未定義,則定義並賦值,否則不變)
exp:
a = hello
a ?= nice
b ?= god like
output:
echo $(a)
echo $(b)
result: hello
god like
預定義變數
區域性變數 --只能在規則內部用
$^ 依賴列表
$@ 目標
$< 依賴列表中的第乙個
exp:
objs := a.c
objs += b.c
targ = s.o
$(targ) : $(objs)
gcc $^ -o $@ // == %.o: %.c gcc $^ -o $@
.phony: clean //生成偽目標,避免執行make clean時,若當前資料夾存在檔案clean時產生衝突
最後附上乙個綜合例子
1 tag := test
2 obj := main.o fun1.o fun2.o
3 4 $(tag):$(obj)
5 gcc $^ -o $@
6 %.o : %.c
7 gcc $^ -o $@ -c
8 9 clean:
10 rm -f $(obj)
11 rm -f $(tag)
12 13 .phony: clean
makefile學習筆記 makefile概述
20180411 makefile學習筆記 makefile概述 makefile主要是在unix下軟體編譯時寫的,window下一般不用 unix裡makefile做的事 相當於window裡ide所做的事 會不會寫makefile,從乙個側面說明了乙個人是否具備完成大型工程的能力。makefil...
Makefile學習筆記
makefile for boot asm nasm 定義變數 asmflags i include run qemu system i386 hdd boot.img boot.img boot.asm asm boot.asm f bin o boot.img install run clean...
makefile 學習筆記
makefile規則如下所示 目標 依賴檔案列表 命令列表 1 目標通常是要產生的檔名稱,目標可以是可執行檔案或obj檔案,也可是乙個動作的名稱.2 依賴檔案是用來輸入從而產生目標的檔案.乙個目標通常有幾個依賴檔案.1 make支援三種萬用字元 和 代替乙個和多個字元 代替乙個字元 2 makefi...