[CMake] What about...

Thomas Zander zander at kde.org
Fri May 26 08:31:31 EDT 2006


On Friday 26 May 2006 14:03, Brandon J. Van Every wrote:
> Thomas Zander wrote:
> > Hiya;
> > In KDE (including KOffice) we switched to cmake, as you are probably
> > aware. I naturally like the speedups we got in linking etc. but I
> > like the less then stellar usability of the cmake solution a lot
> > less. (at this point I would gladly go back to the slower linking, to
> > be honest)
>
> Is this because the CMake workflow is deficient, or because it's not
> what you're already used to?  I don't think it's reasonable to say, "I
> don't like learning anything new."

Its because it slows me down a lot.
When I change a couple of header files I suddenly see it reconfiguring for 
no apparent reason.
Its when I type 'make' it takes upto a minute before it actually starts 
with the first gcc, even if I typed make moments before. (I just typed 
'make | less' this time).
Its that there is no feedback on what I am doing wrong when I alter the 
CMakeLists.txt file, that combined with the 5 minutes it takes between 
edit and output me frustrated when I need to add something.
Its the constant looking for words like VERBOSE=1 which are not easy to 
find.

> > cmake --projecthelp
> > To print all 'make' targets the user can choose from.  Makes it easy
> > to find things like 'make dox'.
>
> What build system uses this? 
Java's ant (and I think maven as well).

> Although it could be a useful feature, 
> I've never typed this before.  I have no natural training, inclination,
> or habit to type this sort of thing.  I have typed "./configure --help"
> plenty of times.

Sure; but do note that this is not the same.  Configure is about 
configuration options; I'm talking about make targets. Like 'all'. 
'install', 'check', 'docs' etc.
Note that ant has a comment field for the custom targets that should be 
shown so you only see those.

> > (c)make /usr/local/foo/bar/baz.la
> > will compile the sources needed only for that lib and link/install
> > it. Tends to be faster then a 'make all install'.
>
> Top-level targets do have names.   For instance I can type "make
> libchicken" or "make libchicken-static".  File-level dependencies don't
> have convenient names, though.

How can I find out what those targets are?
I agree its not the most convenient name, but as a developer you tend to 
know what library you are working on.
Anyway; typing 'make kwordprivate' does not install it; and make install 
links all libs again so thats not a solution currently.

> > A 'configure' script generator that will just convert between the
> > (good old) configure and the cmake foo.  Makes it actually possible
> > to discover what features there are without consulting online
> > documentation ;)
>
> I'd like the whole autoconf toolchain to die. 
This is not about autoconf!!
Its just reusing (abusing?) a well known filename. Thats all.

> I don't want to read 
> autoconf docs, or sort through Makefile.am or ./configure or its
> bletcherous Makefile output anymore.   Forgive my underwhelming
> enthusiasm for anything that makes a ./configure-oriented person's life
> easier.  I'd rather you learn how to use CMake.

This is not for the cmake loving people; this is for the millions of 
people that have learned how to compile. And when they are stuck they 
type './configure --help' to alter options.
Only if you really want all those people to learn CMake as well; you have 
a point.  Its obvious I would disagree with that :)

> > Finally; I searched the FAQ / docs but I found no answer to a nagging
> > question of mine.  Why oh why did you guys choose to use make as the
> > command the developer has to type.  That decision leaves you without
> > any options to make the user experience any better. I honestly can't
> > tell people to type 'make VERBOSE=1' and not apologize in the same
> > sentence about the horrible usability of that.
>
> I don't understand your question.  CMake generates several different
> types of native build files, i.e. make, nmake, Visual Studio .sln
> files, and others.  The .sln files can be run from inside Visual
> Studio, or they can be run on the command line with "devenv."  I
> believe if your make is actually gmake, and you have an appropriate
> link for that on your system (Windows may not), you could type "gmake."

You indeed misunderstood me.
The question is simply; why rely on make. (gmake or whatever). Why not 
have a command that I type every time I want to start a build which has 
nice commandline options and nice output specifically made for cmake.

The problem with the use-(g)make decision is that you are stuck with using 
unintuitive variable names to alter the build process.

-- 
Thomas Zander
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 191 bytes
Desc: not available
Url : http://public.kitware.com/pipermail/cmake/attachments/20060526/5aa6d231/attachment-0001.pgp


More information about the CMake mailing list