GNU Make中使用.SECONDARY实现模式规则。

15
我想使用GNU Make中的特殊目标.SECONDARY,指定特定模式规则的结果在作为中间文件创建时不应被删除。.PRECIOUS适用于模式,但奇怪的是,.SECONDARY不适用。我不想使用.PRECIOUS,因为如果Make被信号中断或与.DELETE_ON_ERROR结合使用时,命令返回非零退出状态,我希望该文件被删除。有什么建议吗?

1
Waow .PRECIOUS 使用模式,但奇怪的是,它不适用于 .SECONDARY。我认为在 https://dev59.com/w14d5IYBdhLWcg3wLf4g 中可以找到一个起点回答。 - philippe lhardy
1个回答

14
您可以使用 .SECONDARY 且不需要前置条件,这将使所有中间目标表现为 SECONDARY。

酷,这可能是我关于https://dev59.com/w14d5IYBdhLWcg3wLf4g问题的另一个提示... - philippe lhardy
它似乎还有其他含义——它将所有目标X都转换为中间目标,这意味着当“不必要”时(也就是说,如果X的前提条件比依赖于X的目标旧),它们将不会被创建。因此,一旦您像建议的那样声明.SECONDARY而没有前提条件,您将不会像以前那样获得整个构建。除非这正是您想要的——我不知道如何解决@Shaun Jackman的问题。 - amka66

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接