我有一个Visual Studio解决方案,我尝试使用Incredibuild工具进行构建。解决方案中的两个项目协同工作 - 第一个项目(我们称之为#34;项目A和#34;)构建可执行文件(foo.exe),它可以解析第二个数据文件( "项目B")生成一些头文件。
显然,项目B中定义的项目A存在依赖关系。如果我在项目B上使用Incredibuild的重建项目选项,它会正确构建项目A并成功构建foo.exe。项目B有一个自定义构建工具文件,它应该使foo.exe与它应该解析的文件的命令行参数一起运行。但是,尝试以这种方式启动foo.exe始终会返回错误:
CustomBuild:
运行Foo
' 可执行文件的路径 \ foo.exe'不被视为内部或 外部命令,可操作程序或批处理文件。
C:\ Program Files (86)\的MSBuild \ Microsoft.Cpp \ V4.0 \ V140 \ Microsoft.CppCommon.targets(171,5): 错误MSB6006:" cmd.exe"退出代码9009。
有趣的是,如果我然后使用Incredibuild构建仅项目B(即使用Build Project选项),一切正常 - 它正确地从构建它的位置选择foo.exe以前,失败,构建。这让我觉得这条道路至少必须没问题。
任何人都可以建议为什么可执行文件不能作为重建的一部分运行?这是一个时间问题,例如项目B在文件系统知道foo.exe之前开始了吗?
这一切都在Visual Studio的常规(重新)构建下工作。只是Incredibuild重建失败了。请注意,我通过Visual Studio IDE完成所有这些操作,而不是从命令行完成。
编辑:这是我使用的免费版本的Incredibuild(Visual Studio附带的版本),因此所有版本都在本地计算机上。
答案 0 :(得分:1)
我最终联系了Xoreax技术支持,他们告诉我这是一个“罕见但已知的问题,与我们的其中一个加速功能相关”。
他们的第一个建议是编写一个可执行文件,它只是“睡了几毫秒”并将其作为自定义构建工具后链接的一部分运行。这确实解决了当前的问题,但我正在构建的解决方案存在许多类似的问题,并且在所有地方添加这种延迟很快变得乏味并且并不总是有效。无论如何,这感觉就像一块软糖。
所以我问这个行为是否可以切换到关闭,事实上它可以。在Visual Studio中,Incredibuild菜单具有“代理设置”选项,并且从调用的对话框的“Visual Studio构建|高级”页面中,可以取消选中使用无序任务生成增强吞吐量选项。< / p>
案件结案。
答案 1 :(得分:0)
有一些选项可以在构建过程中卸载或拦截自定义工具。尝试查看“ c:\ program files(x86)\ IncrediBuild \ Samples”