在我的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中的任何主体都会触发重建它。
答案 0 :(得分:1)
这是(或多或少).SECONDARY
特殊目标的用途。如果您添加依赖于.SECONDARY
的规则,则只有在针对不存在的目标明确要求或需要时才会重建该规则:
.SECONDARY: res/lengthy_dependency
现在res/lengthy_dependency
只有在命令行中明确要求时才会下载,或者由于其他原因需要重建依赖它的东西。