从 Makefile 中删除依赖项

Removing dependencies from a Makefile

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

如何让Makefile中的clean目标自动移除gccmakedep添加到Makefile中的依赖?

(我不能在 clean 目标中使用命令来搜索 "# DO NOT DELETE" 分隔符,因为 gccmakedep 本身会找到该参数并认为它应该在那里切碎......?)

我认为您可以 gccmakedep -fdepends.mk 将输出生成到不同的 makefile 中。然后你可以包含它,并在干净的规则下删除。

-include depends.mk
clean:
    @rm -f depends.mk

就我个人而言,我使用 cc -MMD -MP 生成 .d 依赖并将它们包含在 Makefile 中。它不需要任何额外的工具,您可以清除 .d 文件和目标文件。这里是 an example.

这也是 Scott McPeak 的 good writeup 更便携的解决方案和解释。

如果可能,请避免修改您的 Makefile(并因此转储 gccmakedep)。而是为 dependency tracking.

使用外部文件

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