GNU Make,构建不必要的依赖项

时间:2015-01-31 17:58:40

标签: makefile gnu-make

在我的makefile中,我有一个类似的规则;

res/resource.me: res/lengthy_dependency
   ... code that builds resources.me assuming lengthy_dependency is present ...

res/lengthy_dependency:
   ... Download 10GB data and stuff ...

这一切都很好,但是在构建时运行res / resource.me并删除res / lengthy_dependency以节省空间。 我得到了lengthy_dependency,而不是“没有为res / resource.me做任何事情”。

如果我注释掉res / lengthy_dependency的主体,并保持其他一切静态;我确实得到了“res / resource.me无法完成的任务”。

为什么构建res / lengthy_dependency的细节会影响它是否构建?

注意:res / lengthy_dependency没有任何子依赖项。 编辑:似乎res / lengthy_dependency中的任何主体都会触发重建它。

1 个答案:

答案 0 :(得分:1)

这是(或多或少).SECONDARY特殊目标的用途。如果您添加依赖于.SECONDARY的规则,则只有在针对不存在的目标明确要求或需要时才会重建该规则:

.SECONDARY: res/lengthy_dependency

现在res/lengthy_dependency只有在命令行中明确要求时才会下载,或者由于其他原因需要重建依赖它的东西。