views:

452

answers:

4

Hi, i use incredibuild for parallel compiling... i also need parallel linking but i couldnt manage it for linking.

  • do you know is it possible to make it parallel?
  • if there is a way, could you tell me?
  • if not, do you know any other tools for this purpose?

i have too many projects and i need to link them on seperate machines..

+1  A: 

You can find a bit a information on a slide titled “concurrent linking” in this presentation (PDF, taken from here).

Bastien Léonard
sorry, i forgot to say i use visual-studio
ufukgun
+1  A: 

You can link two /projects/ in parallel.

You cannot link a single project in parallel. This is because Incredibuild is not a compiler or linker itself - it is just a coordinator on top of the existing VS tools. It spins up multiple instances of the compiler for different source files but the VS linker can only be invoked once to link an entire project.

I used Incredibuild for a while but it has some bugs with edge cases (e.g. ActiveX interop wrappers) that caused too much trouble. Add to this that Visual Studio can do multi-threaded compiles anyway makes it not worth the money. (Aside: it is undocumented, but you can do multi-threaded compile in VS2005 by adding /MP C++ project properties.)

Aidan Ryan
i want to link on parallel more than 20 projects. actually i know that i cant make single project parallel but i need parallel linking for more than one projects. i am happy with compiling on parallel machines. there are lots of machines at work and it make it very short for full rebuild. but the problem is on linking. because it does not use other computers..
ufukgun
Multi threaded build is build multiple projects, if you need more time spent on one project it's not building multiple files in the project at once. Incredibuild can improve build time over the native.
Greg Domjan
@Greg ---- huh?
Aidan Ryan
+2  A: 

Linking is not really suceptible to parallel processing because it is the natural serialisation point in the production of a executable:

  • multiple developers can write code in parallel, because code is in many different source files
  • compilers can compile code in parallel, because multiple instances of the compiler can take the many source files and produce many object files
  • the linker cannot (easily) work in parallel, because it takes many object files and produces a single executable

So I think you will be out of luck, certainly for the commonly used linkers such as MS and gcc.

anon
A: 

There are some general setting suggestions on Improving link time with Incredibuild

You can also skip linking of static libs where you won't distribute them using Incredilink

We found that addition of a signing post build step would stop incredibuild from working on following projects, adding a comment to post build was supposed to help

rem IncrediBuild_AllowOverlap

See IncrediBuild_AllowOverlap doc

Greg Domjan