#Makefile
main:main.o lib.o
main.o:main.c lib.h
gcc -c main.c
lib.o:lib.c lib.h
gcc -c lib.c
#The end of Makefile
$@ 目标文件的完整名称
$^ 所有不重复的依赖文件,以空格分开
$% 如果目标是归档成员,则该变量表示目标的归档成员名称
则有
main:main.o lib.o
main.o:main.c lib.h
gcc -c $^
lib.o:lib.c lib.h
gcc -c $^
$* 不包含扩展名的目标文件名称
$+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含
重复的依赖文件
$? 所有时间戳比目标文件晚的依赖文件,并以空格分开
$% 如果目标是归档成员,则该变量表示目标的归档成员名称
小技巧:
一个Makefile的缺省规则
.c.o:
gcc -c $<
这个规则表示所有的 .o文件都是依赖与之相应的.c文件的。
# 简化后的Makefile
main:main.o lib.o
gcc -o $@ $^
.c.o:
gcc -c $<