Makefile

Makefile语句执行流程

2018-08-10  本文已影响0人  stringlife

你竟然是这样的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

解释以下为什么会是这个结果

  1. 当执行make的时候会去寻找all目标,发现依赖first目标
  2. 找到first目标后又发现依赖secend目标
  3. 接下来会去寻找secend目标,而不是先执行@echo first step语句,因为这条语句是依赖 secend的
  4. 同样适用secend目标会先寻找thrid目标
  5. 完成third目标后会回来执行secend的语句
  6. 完成secend目标后会回来执行first的语句

这里有点难理解,请仔细思考

上一篇下一篇

猜你喜欢

热点阅读