TARGET:Dependency file
COMMOND
TARGET:Dependency file
COMMONDTARGET:Dependency file
COMMOND其中:COMMOND必須以【TAB】字符作爲本行的開頭!
例如:
file1:file1.o file2.o
gcc fie1.o file2.o -o file1
file1.o:fie1.c head1.h
gcc -Wall -O -g -c file1.c -o file1.o
file2:file2.c head2.h
gcc -Wall -O -g -c file2.c -o file2.o
clean:
rm file1.o file2.o
注:像clean這種沒有第一個目標文件的直接或間接關聯,那麼它後面的命令不會被自動執行。可以“make clean”來執行
變量的定義與賦值:
1.遞歸展開定義:可以引用其之前沒有定義的變量,也就是其引用的變量在其之後定義。會造成無窮循環。
格式如下:
Var:variable
2.直接展開定義:變量值對另外變量的引用在定義時被展開。同時不能對其後定義的變量進行引用。
4.替換引用定義:
例如:
foo:=a.o b.o c.o
bar:=$(foo:.o=.c)
bar的值就爲“a.c b.c c.c ”
常用的自動變量:
$@:表示當前規則中的問正目標文件
$<:表示當前規則中第一個依賴文件名
$^:當前規則中的所有文件列表
例如:
exc=varibale1.o variable2.o variable3.o
obj1= variable1.c head1.h
obj2=variable2.c head2.h
obj3=variable3.c
CC=gcc
CFLAGS= -Wall -O -g -c
Target:$(exc)
$(CC) $^ -o $@
variable1.o:$(obj1)
$(CC) $(CFLAGS) $< $@
variable2.o:$(obj2)
$(CC) $(CFLAGS) $< $@
variable3.o : $(obj3)
$(CC) $(CFLAGS) $< $@
環境變量:區分系統環境變量和make的環境變量
VPATH
Makefile常用函數:
$(patsubst A,B,text) :此函數時將文本“text”中符合格式爲“A”的字符,用格式“B”替代。參數“A”經常使用模式通配符%來代表一個單詞裏的若干字符。
次函數經常用於文件後綴名的轉化。例如:$(patsubst,%.c,%.o,$(var))
$(word N,text):此函數的作用是將“text”中的第N個單詞取出,並返回這個單詞。
Makefile與shell:如果函數返回結果中存在換行符,那麼將其替換爲空格,並去掉末尾的回車符號。
例:Var1=$(shell pwd)
Makefilede 語法:顯示規則、隱式規則、靜態模式規則。
Makefile自動編寫工具