Makefile 从生成文件中删除依赖项

Makefile 从生成文件中删除依赖项,makefile,Makefile,我们有使用的脚本,这些脚本根据上次运行Makefile的系统使用依赖项填充Makefile 我们如何使Makefile中的clean目标自动删除gccmakedep添加到Makefile中的依赖项 (我不能在clean目标中有一个命令来搜索“#不要删除”除法器,因为gccmakedep本身会找到该参数,并认为它应该在那里切掉…?)我认为可以让gccmakedep-fdepends.mk将输出生成不同的生成文件。然后,您可以将其包括在内,并根据清除规则删除 -include depends.mk

我们有使用的脚本,这些脚本根据上次运行Makefile的系统使用依赖项填充Makefile

我们如何使Makefile中的
clean
目标自动删除gccmakedep添加到Makefile中的依赖项


(我不能在
clean
目标中有一个命令来搜索
“#不要删除”
除法器,因为gccmakedep本身会找到该参数,并认为它应该在那里切掉…?)

我认为可以让
gccmakedep-fdepends.mk
将输出生成不同的生成文件。然后,您可以将其包括在内,并根据清除规则删除

-include depends.mk
clean:
    @rm -f depends.mk
就我个人而言,我使用
cc-MMD-MP
生成
.d
依赖项,并将它们包含在Makefile中。它不需要任何额外的工具,您可以清理
.d
文件以及对象文件。给你


这也是Scott McPeak的一篇文章,介绍了更多可移植的解决方案和说明。

我认为您可以将
gccmakedep-fdepends.mk
输出到不同的生成文件中。然后,您可以将其包括在内,并根据清除规则删除

-include depends.mk
clean:
    @rm -f depends.mk
就我个人而言,我使用
cc-MMD-MP
生成
.d
依赖项,并将它们包含在Makefile中。它不需要任何额外的工具,您可以清理
.d
文件以及对象文件。给你


这也是Scott McPeak提供的一个更具可移植性的解决方案和解释。

如果可能,请避免修改Makefile(从而转储gccmakedep)。相反,使用外部文件来处理


或者,在清理规则中使用执行清理的脚本(因此不会直接触发
gccmakedep

如果可能,请避免修改生成文件(从而转储
gccmakedep
)。相反,使用外部文件来处理


或者,在清理规则中使用执行清理的脚本(因此不会直接触发
gccmakedep

clean
在您的示例中不应依赖depends.mk-否则它将在执行清理之前尝试构建depends.mk,这是浪费时间。相反,请按照您的食谱执行
@rm-f dependens.mk
,这样,如果文件还不存在,它就不会消亡,并且
clean
不依赖任何内容。当然,为什么不呢。这取决于你想做什么。我想对某些人来说,这比说明性的更令人困惑。
clean
在您的示例中不应该依赖depends.mk-否则它将在执行clean之前尝试构建depends.mk,这是浪费时间。相反,请按照您的食谱执行
@rm-f dependens.mk
,这样,如果文件还不存在,它就不会消亡,并且
clean
不依赖任何内容。当然,为什么不呢。这取决于你想做什么。我想对某些人来说,这比说明问题更令人困惑。