【问题标题】:Incredibuild not handling custom build tools very wellIncredibuild 不能很好地处理自定义构建工具
【发布时间】:2016-01-25 15:34:07
【问题描述】:

我有一个我正在尝试使用 Incredibuild 工具构建的 Visual Studio 解决方案。解决方案中的两个项目协同工作 - 第一个项目(我们将其称为“项目 A”)构建一个可执行文件(foo.exe),它可以解析第二个项目(“项目 B”)中的数据文件以生成一些头文件。

显然在项目 B 中定义了对项目 A 的依赖。如果我在项目 B 上使用 Incredibuild 的 Rebuild Project 选项,它会正确构建项目 A 并成功构建 foo.exe。项目 B 有一个自定义构建工具文件,它应该导致 foo.exe 使用它应该解析的文件的命令行参数运行。但是,尝试以这种方式启动 foo.exe 总是会返回错误:

自定义构建:

奔跑吧

'可执行文件的路径\foo.exe'未被识别为内部或 外部命令、可运行程序或批处理文件。

C:\程序文件 (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(171,5): 错误 MSB6006:“cmd.exe”以代码 9009 退出。

有趣的是,如果我随后使用 Incredibuild 构建项目 B(即使用构建项目选项),一切正常 - 它正确地从构建到的位置选择 foo.exe以前,失败,构建。这让我觉得至少这条路一定没问题。

谁能说明为什么可执行文件不能作为重建的一部分运行?是否是时间问题,例如项目 B 在文件系统知道 foo.exe 之前开始??

这一切都在 Visual Studio 的常规(重新)构建下工作。只是 Incredibuild 重建失败了。请注意,我是通过 Visual Studio IDE 完成所有这些操作,而不是通过命令行。

编辑:这是我正在使用的 Incredibuild 的免费版本(Visual Studio 附带的版本),因此所有构建都在本地计算机上。

【问题讨论】:

    标签: linker visual-studio-2015 incredibuild


    【解决方案1】:

    我最后就此事联系了 Xoreax 技术支持,他们告诉我这是“罕见但已知的问题,与我们的一项额外加速功能有关”。

    他们的第一个建议是编写一个简单地休眠“几毫秒”的可执行文件,并将其作为自定义构建工具链接后的一部分运行。这确实解决了眼前的问题,但我正在构建的解决方案有许多类似的问题,并且在任何地方添加这种延迟很快变得乏味并且并不总是有效。无论如何,这感觉就像一个软糖。

    所以我问这个行为是否可以关闭,确实可以。在 Visual Studio 中,Incredibuild 菜单有一个 Agent Settings 选项,在调用对话框的 Visual Studio Builds|Advanced 页面中,取消选中Enhance throughput using out-of-of-order tasks spawning选项是一个简单的例子。

    结案。

    【讨论】:

      【解决方案2】:

      在构建过程中可以选择如何卸载或拦截自定义工具。尝试查看“c:\program files (x86)\IncrediBuild\Samples”

      【讨论】:

        猜你喜欢
        • 2011-12-24
        • 1970-01-01
        • 2012-06-01
        • 2017-03-29
        • 2014-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-06
        相关资源
        最近更新 更多