Skip to content

CMake now really taking off ?

Monday, 4 September 2006  |  alexander neundorf

Recently it seem a lot of projects are switching to CMake. Just today I read the news about Debian forking cdrecord and almost missed the little note near the end of the article: "For our fork we used the last GPL-licensed version of the program code and killed the incompatibly licensed build system. It is now replaced by a cmake system,"

Do you know OpenWengo ? It's a VoIP client, also featuring video support, and you know what ? They are also testing CMake. These guys also have a Trac running, which is great software, check it out if you need an integrated Wiki/Bugtracker/Sourcecontrol web application.

Or take the premier Open Source Desktop Publishing application, Scribus . They switched already to CMake, and apparently without major problems:

All apps listed above are Qt4/KDE4 applications (except obviously cdrtools), but there are also other projects switching: Boson, a real time 3D strategy game is now build with CMake.

Do you know Chicken Scheme ? CHICKEN is a compiler for the Scheme programming language, available under the BSD license. Chicken scheme can now also be built with CMake: .

CMake also seems to be popular among researchers: both MOOS, the "Cross platform software for mobile robotics research", as also Orca, which is an an open-source framework for developing component-based robotic systems, are using CMake for building their software. There is also EMAN, a software for single particle analysis and electron micrograph analysis developed at the Baylor College of Medicine, and they too went with CMake.

So, are we seeing the beginnings of a big change (at least for developers) ?

On the KDE side, there's one important thing to mention: from September 12th, CMake 2.4.3 will be required for building KDE. So if you haven't updated yet, do so now !

I also plan to improve the automoc implementation. Currently approx. 20 to 25 percent of the time of a cmake run are spent in automoc. I plan to move this from cmake time to build time and do it only if required. This will cut off quite some time.


P.S. and, well, if you really want to, you can even abuse CMake to convert wavs to mp3s:

file(GLOB wavs "*.wav")

foreach(file ${wavs}) get_filename_component(basename ${file} NAME_WE) exec_program(lame ARGS -b 192 -h ${file} ${basename}.mp3) endforeach(file)