您可以显式声明一个提及的文件.INTERMEDIATE吗?

时间:2019-02-18 17:19:27

标签: makefile gnu-make

this answer的评论中,MadScientist(现为GNU Make的维护者)对明确声明的.INTERMEDIATE目标说:

  

[文件]在任​​何规则(不是配方)中都必须明确提及,以取消其具有中间状态的资格。

另一方面,the GNU make manual

  

但是,您可以通过将文件列出为特殊目标.INTERMEDIATE的先决条件来将其明确标记为中间文件。即使以其他方式明确提及该文件,此操作也将生效。

是对的还是我错了?

1 个答案:

答案 0 :(得分:2)

有一个误解:以上两个陈述都是正确的,但是您应用的上下文(在明确声明的.INTERMEDIATE目标上的 )是不正确的;该声明是对我对答案的评论中提出的一个问题的回应,这与原始问题有所不同。

在没有特殊替代的情况下,如果目标完全由make推断(没有在makefile中明确列出,而是仅通过隐式规则搜索发现),则有资格成为中间对象。

如果目标在makefile中被列为目标或先决条件,则默认情况下它不符合中间条件。 .INTERMEDIATE特殊形式使您可以声明所提到的目标是中间目标。

要确保目标不是 中间对象,只需在makefile中将该目标作为目标或某个目标的先决条件就足够了(不必一定是在构建过程中实际构建的目标)调用make。)

为确保目标中间对象,不应提及它,否则应将其声明为.INTERMEDIATE的先决条件。