考虑以下场景:
tempfile: bar
generate tempfile (using bar)
foo: tempfile
generate foo (using bar)
事情是这样的:foo
是使用 生成的tempfile
。tempfile
是一个仅在生成foo
.此外,tempfile
包含从bar
, (不是临时文件)获取的一些数据,因此每当bar
更改时,临时文件也应该更改,并依次影响foo
。
现在,在运行时make foo
,我只想在更改foo
时构建。bar
实际发生的情况是,Make 删除了临时文件(我自己并不介意),然后它每次都会构建 foo,即使bar
没有改变。
有什么建议吗?
答案1
如果foo
只需要bar
,那么你可以放弃tempfile
先决条件:
foo: bar
generate foo (using bar)
如果foo
需要tempfile
,并且tempfile
仅用作中间文件,您可以要求(GNU)Make将其保留将其标记为珍贵:
.PRECIOUS: tempfile
tempfile: bar
generate tempfile
foo: tempfile
generate foo
如果有必要,另一种可能性tempfile
是不将其视为tempfile
单独的目标:
foo: bar
generate tempfile
generate bar