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