2010年12月30日 星期四

Gnu make: $< and $@的用法

Follow 

4.12.1 Syntax of Static Pattern Rules

我們可以簡化makefile的內容

一個makefile的內容如下

objects = main.o Eye.o Nose.o Ear.o Mouse.o Face.o

all: $(objects)
gcc $(objects) -o main

$(objects): %.o: %.c
gcc -c $< -o $@

clean:
rm main.o Eye.o Nose.o Ear.o Mouse.o Face.o main

藍色部份第一行中, %稱為stem
gnu make會替我們match出符合的.o檔的file name
然後交給gcc去作compile
$<: 能夠找出prerequisites的name
$@: 則能夠找出target的name

make之後你可以得到以下結果
gcc -c main.c -o main.o
gcc -c Eye.c -o Eye.o
gcc -c Nose.c -o Nose.o
gcc -c Ear.c -o Ear.o
gcc -c Mouse.c -o Mouse.o
gcc -c Face.c -o Face.o
gcc main.o Eye.o Nose.o Ear.o Mouse.o Face.o -o main


是使用git作source control
你也可以使用git log -p來查看差異


透過Facebook分享

沒有留言: