[CMake] Is CMake powerful enough?

Bill Hoffman bill.hoffman at kitware.com
Fri Jun 8 08:15:41 EDT 2007


Brandon Van Every wrote:
> On 6/7/07, Alexander Neundorf <a.neundorf-work at gmx.net> wrote:
>> On Thursday 07 June 2007 15:45, Oliver Kullmann wrote:
>>
>> > Finally, it somehow seems to us that the conception of cmake is not 
>> really
>> > that of a powerful extension of make, but more of a convenient
>> > "user-interface", with the typical trade-off: What the 
>> user-interface does,
>> > it does convenient and well, but what it not does is very hard to
>> > integrate?
>>
>
> But your needs might be truly in the realm of research.  If so,
> chasing down research papers and projects is your best option.
> Myself, I've gotten very irritated when looking at functional
> programming languages, only to see build systems based on untyped
> shells using incredibly error prone system tools.  I think the SML/NJ
> guys got sick of it and did something about it, they made some kind of
> build tool, but I've never checked it out.
I am not sure I agree here.   I believe that Oliver's research is in:
"SAT solving", and not in build system maintenance.   CMake will
allow Oliver and his researchers to focus on SAT solving and not
build system maintenance.   Once in place a CMake system should
be easy for the researchers to add new code.  This is exactly the
environment CMake was created for.  ITK www.itk.org was the
project for which CMake was originally created. In that case,
it was researchers in medical image analysis that needed a build
tool. 

The current build system they have has these features:

- test system
- performance measurement
- documentation generation
- automatic releases
- automatic code detection
- a single makefile in the source tree with symlinks to all directories

The last two are the only ones that would be out of the ordinary for
CMake.   Although you could use GLOB, I prefer specifically listing
the files you want to build.   I never liked build systems that just find
files.  You create a foo.cxx and it gets built into the system.   If you 
just
wrote 100+ lines of code, is it that hard to specify one extra line in
a build file to let the build system know that you want to build all that
code you just wrote?  

The other issue is the in-source and out-source builds.   Once you get
used to out of source builds they really are nice.  Since your target 
platform
is linux, you could create a few shell aliases or scripts that allow you to
build from the source tree even with an out of source build.  I know the
KDE folks do that.

Another thing to consider is long term maintenance. CMake will be
around for the long haul.  We will keep adding features and improving it.
If you have your own system, the resources spent on maintaining your 
makefiles
will take away from your research on SAT solving.  CMake has a simple
language, and the hard stuff is done in C++ and by CMake code that comes
with CMake.  This is intentional.   It keeps CMake files simple allowing
for easier maintenance.

Oliver, I would suggest that you that you try CMake on some small subset
of your system, and see how it goes.  If you have any technical 
questions about
the CMake, please post them to this list, and I am sure they will get 
answered.

-Bill






More information about the CMake mailing list