【问题标题】:Ignore build errors and build as far as possible with scons -i or with scons -k or both?忽略构建错误并尽可能使用 scons -i 或 scons -k 或两者兼而有之?
【发布时间】:2014-05-23 09:19:38
【问题描述】:

我正在为 scons 扩展一个命令,但来源不完整。一些 xml pdf 文档不存在。 根据 scons wiki,我可以使用 scons -i (--ignore-errors, 忽略执行重建文件命令的所有错误。) 或者 scons -k(--keep-going,出错后尽可能继续。失败的目标和依赖它的目标不会重做,但命令行指定的其他目标仍然会被处理。)

我猜scons -k 对我的目的来说是正确的命令(测试后面的步骤,而一些第一步可能会失败)但我仍然想知道什么时候使用 -i,因为忽略错误会导致构建越来越多的东西好。还是 -i 忽略异常,只要所有目标文件仍将成功创建,而 -k 甚至在文件未创建时继续?

【问题讨论】:

    标签: scons


    【解决方案1】:

    “-i”选项将失败的节点标记为“已执行”,就像构建目标成功一样。因此,根据实际失败的节点,父节点可能会将丢失的文件作为空内容处理,然后愉快地继续……使您的最终目标处于可能不一致的状态。

    使用“-k”不会发生这种情况,因为它会立即将树上的所有父级标记为“失败”,并且从不尝试构建它们中的任何一个。这意味着所有剩余创建的目标在它们的依赖关系方面应该是一致的,并且可以用于生产。

    【讨论】:

      【解决方案2】:

      scons 实现了 GNU make 的行为,文档 here 对此进行了说明。

      简而言之,-k 继续执行即使在推断出最终目标将失败之后也可能成功的规则。 -i 更强大,因为即使在某些命令失败后,它也会在规则内继续运行命令,并且将执行没有机会成功的规则,例如当没有完整的输入可用时。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-17
        • 2015-10-14
        • 2017-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多