C++ 不可信构建链接

C++ 不可信构建链接,c++,visual-studio,linker,C++,Visual Studio,Linker,我使用IncredBuild进行并行编译。。。 我也需要并行链接,但我无法管理它的链接 你知道有没有可能使它平行 如果有办法,你能告诉我吗 如果没有,您是否知道其他用于此目的的工具 我有太多的项目,需要在不同的机器上链接它们。您可以并行链接两个/projects/ 不能并行链接单个项目。这是因为IncredBuild本身不是编译器或链接器,它只是现有VS工具之上的协调器。它会为不同的源文件启动编译器的多个实例,但VS链接器只能调用一次以链接整个项目 我曾经使用过IncredBuild,但它在

我使用IncredBuild进行并行编译。。。 我也需要并行链接,但我无法管理它的链接

  • 你知道有没有可能使它平行
  • 如果有办法,你能告诉我吗
  • 如果没有,您是否知道其他用于此目的的工具

我有太多的项目,需要在不同的机器上链接它们。

您可以并行链接两个/projects/

不能并行链接单个项目。这是因为IncredBuild本身不是编译器或链接器,它只是现有VS工具之上的协调器。它会为不同的源文件启动编译器的多个实例,但VS链接器只能调用一次以链接整个项目


我曾经使用过IncredBuild,但它在边缘案例(例如ActiveX互操作包装器)中存在一些bug,导致了太多的麻烦。此外,VisualStudio还可以进行多线程编译,这使得它不值得花钱。(除了:它是未记录的,但是可以通过添加/MP C++项目属性来在VS2005中进行多线程编译)

< P>链接对于并行处理来说并不是真正的可接受的,因为它是可执行文件的自然序列化点:

  • 多个开发人员可以并行编写代码,因为代码位于许多不同的源文件中
  • 编译器可以并行编译代码,因为编译器的多个实例可以获取许多源文件并生成许多目标文件
  • 链接器无法(轻松)并行工作,因为它需要许多对象文件并生成一个可执行文件

因此,我认为您可能会运气不佳,当然对于常用的链接器,如MS和gcc,您肯定会运气不佳。

有一些关于

您还可以跳过静态库的链接,因为您不会使用

我们发现,添加一个签名后构建步骤将阻止IncredBuild处理以下项目,在后构建中添加注释应该会有所帮助

rem IncrediBuild_AllowOverlap

请参见

增量构建支持并行执行链接的能力。
转到“代理设置”->“Visual Studio构建”->“常规”->“允许链接步骤并行运行”

我想链接20多个并行项目。事实上,我知道我不能使单个项目并行,但我需要多个项目的并行链接。我喜欢在并行机上编译。有很多机器在工作,这使得它非常短的全面重建。但问题在于链接。因为它不使用其他计算机。多线程生成是生成多个项目,如果您需要在一个项目上花费更多时间,它不会同时在项目中生成多个文件。难以置信的构建可以比本地的构建时间更快。@AidanRyan:他可能被VS将并行构建独立项目的事实弄糊涂了。另一方面,使用/MP构建仍然只构建在本地机器上,因此您仍然受到机器上内核数量和CPU速度的限制(至少对于C++,编译似乎主要受CPU限制)。像IncredBuild这样的工具可以让你在许多机器上发布你的构建(在我们的项目中,这意味着将编译时间从45分钟减少到大约2分钟)。你可以在(PDF,摘自)中标题为“并发链接”的幻灯片上找到一些信息。但是它说“允许链接步骤在本地并行运行”。我很确定OP意味着不同的libs/可执行文件可以链接到不同的机器上。