如何正确使用Makefile中的中间文件?

如何正确使用Makefile中的中间文件?

考虑以下场景:

tempfile: bar
    generate tempfile (using bar)

foo: tempfile
    generate foo (using bar)

事情是这样的:foo是使用 生成的tempfiletempfile是一个仅在生成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

相关内容