如何检查运行抖动是否会重建目标(实际上没有尝试构建它)?

ste*_*ehr 6 haskell shake-build-system

在某些情况下,我想非常快速地知道某个目标文件是否是最新的,即是否使用摇动构建它会运行任何传递给目标的规则.

摇动实现这一目标的最佳方法是什么?

我的问题与Shake有些相关:表示是否必须重建任何东西.但是,我不想运行实际构建,因为我不想触摸任何构建产品.

Nei*_*ell 2

在 Shake 中,确定哪些文件是“脏”文件有点困难。如果您感兴趣的文件依赖于任何预言机(即使是传递性的),则该文件被视为“脏”,因为预言机总是脏的。然而,如果 Shake 重新运行依赖的规则/预言并且它们没有改变,那么此时它再次被认为是干净的。因此,大多数规则在运行之前都被认为是脏的,并且只有在运行某些规则之后才变得干净。

我已经提出了要求做更好的事情。一个选项将给出一个目标规则,说明哪些叶子依赖于它并且是脏的 - 这将列出预言机(您合理地期望不会更改),并且如果它列出了任何源文件,您将期望它重建。

(如果有人有什么好的想法,我欢迎建议。)