Makefile语句执行流程

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 来自陈浩的一片老文,但绝对营养。 示例工程:3 个头文件*.h,和 8 个 C 文件*.c。 初 编译过程,源文件...
    周筱鲁阅读 4,752评论 0 17
  • makefile关系到整个工程的编译规则,一个工程中的源文件不计其数,按其类型、功能、模块分别放在若干的目录当中,...
    Joe_HUST阅读 1,909评论 0 3
  • 五顶茂岭山抒怀 历史文化名城济南老城的东部有一座山,它没有享誉千年的“齐烟九点”那么有名,也没有层峦叠翠的华山那么...
    朱广力阅读 118评论 0 0
  • 看到她的回复,我想都没想给他发了一句话:“李丹妮,我喜欢你,做我女朋友吧!”当时我说出这句话的时候心里顿时踏实了很...
    马灬丹妮阅读 324评论 7 1