我的makefile文件如下
file1 file2 file3 : 2.txt 3.txt 4.txt
@echo $@
@echo $*
@echo $<
@echo $^
@echo $?
2.txt 3.txt 4.txt : 1.txt
@echo $@
@echo $*
@echo $<
@echo $^
@echo $?
1.txt 2.txt 3.txt 4.txt都是存在的文件,其中1.txt比其他三个txt文件新,而file1 file2 file3是不存在的,然后执行makefile得到的结果如下
$ make
2.txt
1.txt
1.txt
1.txt
3.txt
1.txt
1.txt
1.txt
4.txt
1.txt
1.txt
1.txt
file1
2.txt
2.txt 3.txt 4.txt
2.txt 3.txt 4.txt
2.txt 3.txt 4.txt最为目标都执行了一遍,file1执行了一遍,file2和file3为什么没有执行呢,是不是file1是最终的目标,而file2,file3虽然写在一个合并的命令里边,但是和整个关系链没有关系,所以不执行。