2015-02-23 145 views
1

我们有使用gccmakedep的脚本,它们使用依赖关系填充Makefile,该依赖项基于上次运行的系统。从Makefile中删除依赖关系

我们如何让Makefile中的clean目标自动删除gccmakedep添加到Makefile的依赖关系?

(我不能在clean目标,搜索本身的"# DO NOT DELETE"分频器的命令,因为gccmakedep本身就会发现这样的说法,并认为这就是它应该剁......?)

回答

3

我觉得你可以做gccmakedep -fdepends.mk产生输出到不同的生成文件。然后你可以包括它,并删除干净的规则。

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

就个人而言,我用cc -MMD -MP生成.d依赖,包括他们在Makefile文件。它不需要任何额外的工具,您可以清除.d文件以及对象文件。这里是an example

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

+0

'clean'不应该依赖于depends.mk在你的榜样或者使用脚本 - 否则它会尝试建立依赖.mk在做清洁之前,这是浪费时间。相反,执行'@rm -f depends.mk'作为你的配方,所以如果该文件还不存在,它就不会死亡,并且'clean'不依赖于任何东西。 – John 2015-02-25 18:23:29

+0

当然,为什么不呢。这取决于你想做什么。我想这比一些人的说明更混乱。 – 2015-02-25 20:26:18

1

如果可能,请避免修改您的Makefile(并因此转储gccmakedep)。而是使用dependency tracking的外部文件。

在干净的规则,做清理(所以gccmakedep不直接触发)