-2

我们尝试将包含约 20 个项目的 VS2008 解决方案升级到 VS2010,但构建其中一些项目时存在问题。我尝试了不同版本的 VS(2010、2012、2013。即使使用 vc90 编译器版本)/IncrediBuild(4.61、5.0、6.1)/Windows(7、8),但没有任何帮助。项目和 Incredi 的所有可能选项也已更改。没有为这些项目设置自定义构建规则和步骤。请告诉我某人我该怎么办来解决这个问题。

我还不能加载图片,所以这是一个构建图截图的链接

更新:我尝试在没有 IncrediBuild 的情况下在 VS2013 中编译解决方案,但使用 /MP 选项,并且得到了完全相同的结果 - 项目的某些文件是按相同顺序按顺序编译的,因此 Incredi 是无辜的,问题仅在我们的项目以及 VS 如何使用它。

4

2 回答 2

1

IncrediBuild 的最新公共版本引入了一个正是您所要求的功能 - 真正的无序\优化并行化。这一新功能允许 IncrediBuild 并行执行 Visual Studio 任务,即使在 Visual Studio 不知道如何执行此操作的情况下也是如此。这意味着使用 IncrediBuild,不真正依赖于前一个任务的每个任务都将与其并行执行。

因此,在上述场景中,尽管填充固定输出对象文件名会导致 Visual Studio(和 MSBuild)以顺序方式编译这些文件,但 IncrediBuild 将并行编译它们。

除此之外,在项目 B 依赖于项目 A 的情况下,Visual Studio 只会在完成 A 的链接后编译来自项目 B 的源代码(尽管大多数时候项目 B 的编译不依赖于项目 A 的编译,仅这些项目的链接步骤相互依赖),IncrediBuild 将能够并行编译项目 A 和项目 B,然后是 A 的链接和 B 的链接。

希望这能对这个话题有所启发。

免责声明:作者是 IncrediBuild 的 CTO

于 2015-06-21T15:07:26.953 回答
0

因此,问题在于某些 cpp 文件具有固定的输出对象文件名。当这些参数被清除时,它们的编译开始并行。但是在 VS2008 中,即使有这样的参数属性,一切都很好

于 2015-06-17T13:39:11.633 回答