对 makefile 中 .PRECIOUS 的学习

参考 stackoverflow 的例子:

http://stackoverflow.com/questions/5426934/why-this-makefile-removes-my-goal

下面的 :

%.txt: foo.log
  #pass
%.log:
  #pass  

运行时,用 make  a.txt --dry-run, 会得到如下的结果:

#pass

#pass

rm foo.log

也就是说, 中间文件 foo.log 被删除。

但是,如果改为:

all: foo.log
  #pass
%.log:
  #pass

这时候,再运行 make  --dry-run, 会得到如下的结果:

#pass

#pass

也就是说 foo.log 想成为中间文件,是需要条件的。

接着再看 .PRECIOUS 的作用:

.PRECIOUS: %.log
%.txt:foo.log
    #pass
%.log:
    #pass

make a.txt --dry-run

执行结果:

#pass

#pass

在 .PRECIOUS 中声明的文件,没有被删除。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值