Question

A legacy app I am working on currenty takes ~2hours to build. The project has about 170 projects with 150 or so being unmanaged C++ and the other 30 C#.Net 2.0.

What are some suggestions on ways to improve build times for something like this?

Was it helpful?

Solution

Focus on the C++ projects - they are almost guaranteed to be the largest time drains for building.

Some tips on getting the C++ build times down:

  • Make sure that you're only including headers that you need in the C++ projects!
  • Use forward declarations whenever possible in headers instead of including other headers
  • Use the /MP switch to build in parallel, when possible
  • Use abstraction effectively
  • Be sparing in the use of inline functions, since these cost more at compile time
  • Get the dependencies correct, so you're not building more often that required
  • Use pre-compiled headers appropriately

Aside from that, if you're talking 2 hour build times, often there is a simple, cheap (in a big picture way) solution, as well:

  • Upgrade your hardware to help reduce the computation times

OTHER TIPS

If you install IncrediBuild on every machine that needs to build it, it distributes the build process among all of the machines. If you really want to just throw hardware at the problem you can set up a few dedicated machines that serve only as IncrediBuild clients.

On a different scale, make sure your every project has pre-compiled headers configured correctly.

You may try the distributed build system Incredibuild: http://www.xoreax.com/visual_studio.htm

You could use a tool like lint to see if you have redundant include files in your c++ projects.

There is also a great article on this subject at Games from Within.

Make multiple solutions for the project that only include relevant subsets of the projects and leave one super solution for releases etc.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top