[CMake] Converting a large C++-Project to CMake

Alexander Neundorf a.neundorf-work at gmx.net
Sun Oct 31 08:58:06 EDT 2010


On Sunday 31 October 2010, Benjamin King wrote:
> Hi Andreas!
>
> >> Our build is taking ages (almost a three hours on the fastest of our
> >> servers) and it would be really painful if everybody needed to rebuild
> >> everything for himself in the morning.
> >
> > 3 hours sounds quite excessively long.
>
> Yepp, that's too long, really. Thanks for your suggestions on cutting
> that down. We have tried a lot of them already, but there simply  is no
> short-term solution to make the separation of the modules clearer.
> Always working on adding features, never time to refactor, meta template
> programming all over the place. Same old, same old...
>
> Our windows release build and packaging takes almost 8 hours (on a
> virtual machine), which makes a quick fix of a bug reported by our test
> team effectively impossible.
>
> Using parallel compilation on multiple cores and/or machines would make
> things easier for us. With linux, we are using distcc and make -jX. The
> trouble with that is, that the Makefiles generated by qmake don't deal
> well with generated code which we also use a lot. You have to restart
> make a few times to keep things going, which is not practical for an
> automated build and package script.

This is handled properly by cmake-generated makefiles and project files.
You use add_custom_command() to generate files, and if you really list all 
files the custom command generates after the OUTPUT keyword, parallel builds 
will work properly.
We do that all the time in KDE.

> Windows and nmake don't offer any feasible way to parallelize, so we are
> stuck there.

You could use GNU make with the MS compiler, or you can use jom, which is a 
nmake compatible make for Windows, which supports parallel builds 
(http://labs.qt.nokia.com/2009/03/27/speeding-up-visual-c-qt-builds/)

Alex


More information about the CMake mailing list