Makefile的两条关键规则

假如有Makefile如下:

  1. A: B 
  2.     cmd groups one
  3. B: C
  4.     cmd groups two
  5. A: D
    • 一个目标,可以定义多次依赖关系,但只能定义一次构建命令组(cmd groups)。例如:
           A的依赖关系分别在(1)、(5)行,定义了两次。但A的构建命令组,只在(2)处进了定义(命令组可以有多行,这里(2)行只是抽象表示)。由于make程序里,会为每个目标建立一张一对多的依赖关系表,所以可以多次定义依赖关系。
           但cmd groups只应定义一次---既然是cmd groups,即可在这个groups中放多个命令,故没有必要定义多次。若允许定义多次,其执行次序受依赖关系的影响而出现不可控,会滋生众多问题,这也许是make禁用此方式的原因。
    • make会递归的把当前目标的依赖当作子目标,而检查子目标们的依赖关系,而不是遇到目标比较其依赖新,就停止递归检查。例如:
           若A比B新,make A命令仍然会检查B的依赖(因为make并不是首先检查A与B的时间关系,而是先递归检查B的依赖),即执行(3)行的检查,若B比C新(C已经没有依赖,不再递归检查),会执行cmd groups two。执行完后返回到(1),发现A比B新,就不会执行cmd groups one了。
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值