我们尝试将包含约20个项目的VS2008解决方案升级到VS2010,但是构建其中一些项目存在问题。我尝试了不同版本的VS(2010年,2012年,2013年。即使使用vc90编译器版本)/ IncrediBuild(4.61,5.0,6.1)/ Windows(7,8),但没有任何帮助。项目和Incredi的所有可能选项也都有所改变。不为这些项目设置自定义构建规则和步骤。请告诉我有人可以做些什么来解决问题。
我无法加载图片,所以这是link to build graph screenshot。
更新:我试图在没有IncrediBuild的情况下在VS2013中编译解决方案,但是使用/ MP选项,并且完全相同 - 项目的某些文件按顺序编译并按相同的顺序编译,所以Incredi是无辜的,只有在我们的项目中才有问题,以及VS如何使用它。
答案 0 :(得分:1)
IncrediBuild的最新公开版本引入了一项功能,这正是您所要求的 - 真正的无序\优化并行化。 这一新功能允许IncrediBuild并行执行Visual Studio任务,即使在Visual Studio不知道如何操作的情况下也是如此。这意味着使用IncrediBuild,每个不依赖于前一个任务的任务都将与它并行执行。
因此,在上述场景中,尽管填充固定输出对象文件名会导致Visual Studio(和MSBuild)以顺序方式编译这些文件,但IncrediBuild将并行编译它们。
除此之外,在项目B依赖于项目A的情况下,Visual Studio将仅在完成A的链接之后编译来自项目B的源(尽管项目B编译的大部分时间都不依赖于项目编译,只有这些项目的链接步骤相互依赖),IncrediBuild将能够并行编译项目A和项目B,后面跟着A的链接和B的链接。
希望这能为这个话题提供一些启示。
免责声明:本文作者是IncrediBuild的首席技术官
答案 1 :(得分:0)
所以,问题是某些cpp文件有固定的输出对象文件名。当这些参数被清除时,它们的编译开始并行。但是在VS2008中,即使有这样的参数属性,一切都很好