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