有没有办法 运行 假设某些规则是最新的?

Is there a way to run shake assuming some rule is up-to-date?

我们想 运行 构建一个 Shake,同时假设构建了一些目标,例如像

./Build.hs --dont-rebuild my-target

阅读文档似乎应该有办法做到这一点,但我找不到。

您正在寻找的 ShakeOptions 设置是 shakeRebuild=[(RebuildLater,"my-target")]。此设置导致 Shake 无法在此 运行 中重建 my-target。来自 RebuildLater 的文档:

This assumption is unsafe, and may lead to incorrect build results in this run. Assume these files are clean in this run, but test them normally in future runs.

可以使用命令行应用此设置 --skip=my-target。一些注意事项:

  • my-target 不会在这个 运行 中重建,这取决于他们是否需要。
  • 如果您下一步 运行 而不跳过 my-target,它会在需要时重建(--skip 不粘)。