Incredibuild 不能很好地处理自定义构建工具

Incredibuild not handling custom build tools very well

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

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

CustomBuild:

Running Foo

'path to executable\foo.exe' is not recognized as an internal or external command, operable program or batch file.

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(171,5): error MSB6006: "cmd.exe" exited with code 9009.

有趣的是,如果我随后使用 Incredibuild 仅构建 项目 B(即使用“构建项目”选项),一切正常 - 它正确地从 foo.exe它在前一个失败的构建上构建的位置。这让我觉得至少路径应该没问题。

任何人都可以建议为什么可执行文件不能 运行 作为重建 的一部分吗?这是时间问题吗?项目 B 在 foo.exe 为文件系统所知之前开始??

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

编辑:这是我使用的 Incredibuild 免费赠品版本(Visual Studio 附带的那个),所以所有构建都在本地机器上。

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

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

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

案件结案。

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