make(makefile)执行流程

本文讲述make工具执行makefile的规则。
先回顾一下makefile最基本的语法,如下:
targets : prerequisites
recipe

make执行makefile的规则大体为:
1)扫一遍prerequisites,生成目标(子目标)间的依赖关系,该依赖关系类似树的节点关系;
2)根据该依赖关系以类似树的后序遍历规则进行目标的生成;

下面以一个例子说明:

.PHONY: all

all: m n $(info pre_all)
    $(info recipe_all)

m: m1 m2 $(info pre_m)
    $(info recipe_m)

n: n1 n2 m2 $(info pre_n)
    $(info recipe_n)

m1: $(info pre_m1)
    $(info recipe_m1)

m2: $(info pre_m2)
    $(info recipe_m2)

n1: $(info pre_n1)
    $(info recipe_n1)

n2: $(info pre_n2)
    $(info recipe_n2)

执行make,有如下输出:
pre_all
pre_m
pre_n
pre_m1
pre_m2
pre_n1
pre_n2
recipe_m
recipe_n2
recipe_n
recipe_all

从以上打印可以得出:
1)make时,首先会扫一遍makefile中各目标的依赖关系;
2)目标生成的顺序:m1->m2->m->n1->n2->n->all,即类似于树的后序遍历规则进行目标的生成。

再执行命令:make m1,即生成目标m1,输出如下:
pre_all
pre_m
pre_n
pre_m1
pre_m2
pre_n1
pre_n2
recipe_m1

可得:
1)make时,会生成完整的依赖关系;
2)不相关目标不会生成。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值