Makefile有三个非常有用的自动化变量。分别是$@,$^,$<代表的意义分别是:
$@ 表示目标文件
$^ 表示通过目录搜索得到的所有依赖文件的完整路径名(目录+文件名)
$< 表示第一个依赖文件
$? 表示依赖文件列表中被改变过的所有文件
如果我们使用上面三个变量,那么我们可以简化我们的Makefile文件为:
# 这是简化后的Makefile
main:main.o mytool1.o mytool2.o
gcc -o $@ $^
main.o:main.c mytool1.h mytool2.h
gcc -c $<
mytool1.o:mytool1.c mytool1.h
gcc -c $<
mytool2.o:mytool2.c mytool2.h
gcc -c $<
经过简化后我们的Makefile是简单了一点,不过人们有时候还想简单一点。这里我们学习一个Makefile的