你竟然是这样的Makefile( Makefile语句的执行流程)
Makefile有一个反人类的设计,即它的执行流程,估计很多人没有注意这个细节,在接下来的实验中,你可能会大吃一惊
下面是测试代码
all:first
first:secend
@echo first step
secend:third
@echo secend step
third:
@echo third step
make 之后的输出结果是什么相信很多人会认为应该是
下面结果,请注意下面是错误的结果
first step
secend step
third step
下面的结果才是正确的结果
string@asus:~/Projects/makefile$ make
third step
secend step
first step
解释以下为什么会是这个结果
- 当执行make的时候会去寻找all目标,发现依赖first目标
- 找到first目标后又发现依赖secend目标
- 接下来会去寻找secend目标,而不是先执行@echo first step语句,因为这条语句是依赖 secend的
- 同样适用secend目标会先寻找thrid目标
- 完成third目标后会回来执行secend的语句
- 完成secend目标后会回来执行first的语句
这里有点难理解,请仔细思考