求解 Makefile 伪目标的疑惑
陈皓的跟我一起写makefile中有这么一段
我们知道,Makefile中的第一个目标会被作为其默认目标。我们声明了一个“all”的伪目标,其依赖于其它三个目标。由于伪目标的特性是,总是被执行的,所以其依赖的那三个目标就总是不如“all”这个目标新。所以,其它三个目标的规则总是会被决议。也就达到了我们一口气生成多个目标的目的。“.PHONY : all”声明了“all”这个目标为“伪目标”。
all : prog1 prog2 prog3
.PHONY : all
prog1 : prog1.o utils.o
cc -o prog1 prog1.o utils.o
prog2 : prog2.o
cc -o prog2 prog2.o
prog3 : prog3.o sort.o utils.o
cc -o prog3 prog3.o sort.o utils.o
疑惑的是红字部分“其它三个目标的规则总是会被决议,也就达到了我们一口气生成多个目标的目的”
按照我的理解,只有依赖文件比目标文件新时才会执行,既然那三个文件不如all这个目标新,为什么会产生这三个文件呢?
------解决方案--------------------