cmake discussion (was: r18717 - gnucash/trunk/src - Add some experimental CMakeLists.txt)

Christian Stimming stimming at tuhh.de
Thu Feb 25 06:11:24 EST 2010


Zitat von Martin Preuss <aquamaniac at gmx.de>:
> [...]
>> Off-topic: Why I think cmake is better than autotools:
> [...]
>
> There are two points which prevented me from switching my own projects to
> cmake a few years ago:
> - no cross-compile support
> - no support for convenience libraries
>
> The most important point was the latter one: With the autotools I can have
> multiple convenience libraries and reference them in other parts of the
> project. With cmake I had to write the names of all source files into the
> toplevel CMakeList which is quite uncomfortable with bigger projects...
>
> Do those points still apply? AFAIK at least cross-compiling should  
> work now (I believe since 2.6)?

Cross-compiling: Yes, it is possible since 2.6, though not particularly nice.

Convenience libraries: No [1]. Gnucash doesn't actually use any  
convenience libraries but instead "real" libraries, and the final  
executable links into all of them, so this isn't a problem here anyway.

Although I agree that convenience libraries can improve the source  
code organization, I can also see some value in cmake's argument  
against this: The compiler flags when compiling the convenience  
library should depend on where the object files are finally linked  
into. Otherwise, the convenience library might contain object code  
that was compiled differently than how the final result needs it  
(static LIB vs. shared DLL or similar). Hence, even though this is  
still a missing feature of cmake, I can see the value in the arguments  
against their usage, at least against the usage which is supported by  
autotools, because it fools you into a false sense of simplicity where  
the whole issue isn't as simple as it looks in autotools. But the  
point is still open.

Regards,

Christian



[1]  
http://www.cmake.org/Wiki/CMake_FAQ#Does_CMake_support_.22convenience.22_libraries.3F



More information about the gnucash-devel mailing list