$@ 表示目标文件 $^ 表示所有的依赖文件 $< 表示第一个依赖文件 $? 表示比目标还要新的依赖文件列表
例子
root_num.exe: root_num.o my_root.o gcc -o root_num.exe root_num.o my_root.o root_num.o: root_num.c my_root.h gcc -c root_num.c my_root.o: my_root.c my_root.h gcc -c my_root.c
简化后
root_num.exe: root_num.o my_root.o gcc -o $@ $^ root_num.o: root_num.c my_root.h gcc -c $< my_root.o: my_root.c my_root.h gcc -c $<
经过简化后,我们的Makefile是简单了一点,不过人们有时候还想简单一点。
这里我们学习一个Makefile的缺省规则
.c.o:
gcc -c $<
这个规则表示所有的 .o文件都是依赖与相应的.c文件的。
root_num.exe: root_num.o my_root.o gcc -o $@ $^ .c.o: gcc -c $<