Am 30.10.2010 13:54, schrieb Benjamin King:
Hello,

I'm working on a ~1.5Mio LOC C++ project and our buildsystem is a hodgepodge of 
handcrafted Makefiles, shell scripts and
qmake projects.
I tried to convert a subset to CMake and it looks very promising so far.


I'm currently (as a consultant) converting ~2.5 Mio LOC C++/C from 
vcproj/Makefiles/qmake to cmake.
Working with big projects, different VCS, lots of developers is very different 
to using cmake in
small projects (few developers, single repository).
Here are some things I've learned so far:
- Split repositories (You can not put ~2.5 Mio LOC in one repository)
- Automate everything (You need: continuous build and delivery, use cdash or 
hudson)
- Complete build process (You need: checkout, build, packaging and install)
- Support developers (You need: developers want to work as they used to with 
their IDE)
- Fill gaps (You need: Find*-Modules, CMake-Macros)

One important part of our development workflow is this:
1) User 'nightly' builds versions of the project every night on several 
development servers.
2) A developer is coming to the office in the morning, and copies/hardlinks the 
nightly build to his home dir and
probably patches uncommited changes from yesterday into the newly copied build.

Nightly builds are very useful to build releases. Developers should have their 
own source tree and update it on
their own (daily or more often updates from repository and incremental 
rebuilds). Systems for continuous
integration might also be useful.

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.
According to the FAQ, CMake does not support copying build trees around. On the 
development servers, we have the special
situation that all external tools needed for the build are either in /usr/bin, 
/usr/local/bin or
/opt/local/ourstuff/build/bin. Would it be feasible to copy a build tree in 
such a setting? Or could we copy everything,
throw the CmakeCache away, reconfigure and reuse the object files that already 
were build?

There are others ways to build faster, like ccache (http://ccache.samba.org/) 
or distcc (http://distcc.samba.org/).

Do you have any advice on this or other ideas? This is really a make-or-break 
feature for us and I'd like to present
some solution with CMake for it.

If you are going to change tools (introduce cmake), it is also time to review your development process (If in the business world e.g. a SAP-Systems is introduced the complete work flow and business processes will get adapted).


Regards,

Karl



_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to