且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

对 makefile 中 .PRECIOUS 的学习

更新时间:2022-09-15 22:09:21

参考 *** 的例子:

http://***.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 中声明的文件,没有被删除。






本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/archive/2012/09/21/2696772.html,如需转载请自行联系原作者