[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