忽略构建错误并尽可能使用scons -i或scons -k或两者构建?

时间:2014-05-23 09:19:39

标签: scons

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

我认为scons -k是出于我的目的的正确命令(测试后面的步骤,而某些第一步可能会失败)但我仍然想知道何时使用-i,因为忽略错误会导致构建越来越多事情也是如此。或者-i会忽略异常,只要所有目标文件仍然可以成功创建,如果没有创建文件,-k甚至会继续吗?

2 个答案:

答案 0 :(得分:7)

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

" -k"不会发生这种情况。因为它标志着所有的父母在树上,因为"失败"立刻,永远不要试图建立任何一个。这意味着所有剩余的创建目标应该在其依赖关系上保持一致,并准备好用于生产。

答案 1 :(得分:0)

scons 实现了 GNU make 的行为,这在文档 here 中进行了解释。

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