too bad cmake and scons continue to re-solve the same problems autotools solved eons ago
(cross-compiling / tool discovery / custom flags). scons in particular is just terrible and
not in any sort of usable shape for serious projects.
Posted Feb 7, 2008 1:33 UTC (Thu) by modernjazz (guest, #4185)
[Link]
So why are so many projects, which already have "working" autoconf build
systems, doing all that "useless work" to switch to CMake? The next thing
that happens is most of them seem to express great satisfaction and
relief with the result. Is this just self-delusion to justify the work?
LCA: Disintermediating distributions
Posted Feb 7, 2008 10:25 UTC (Thu) by drag (subscriber, #31333)
[Link]
Sometimes.
Like the migration lots of projects have done from going from CVS to SVN to Git or whatever
else.
When mucking around with a program have you ever noticed that once you program something out,
but find some reason to rewrite it, that it turns out to be better then your original version?
Ya sure you could of spent that time bugfixing the old code or hacking new features into it,
but your going to be almost certain that the new code is going to make your job of maintaining
and improving it just that much better.
I have a feeling that if many of those projects just stripped out all the stuff they used make
(or autotools or whatever) for and then reimplimented it from scratch then they would of been
nearly as happy with it.
Also projects that are ho-hum about converting to cmake are not all of a sudden going to turn
around and broadcast to the world that they spent a great deal of their time on something that
ended up not mattering a whole lot. It's not like they are going to end up being examples
while other projects just love it.
LCA: Disintermediating distributions
Posted Feb 7, 2008 10:59 UTC (Thu) by modernjazz (guest, #4185)
[Link]
Sure, a simple project works great with any of several build strategies,
so of course not everyone will be thrilled by switching. But if CMake
only lacks the "I got burned by #!@%*& CMake" contingent, it's already
ahead of the competition.
LCA: Disintermediating distributions
Posted Feb 7, 2008 12:36 UTC (Thu) by nix (subscriber, #2304)
[Link]
My *eyes* got burned by cmake's language.
Haven't they learned that capital letters make things *harder* to read? Have we learned
nothing since the days when Lisp was written in capitals?
LCA: Disintermediating distributions
Posted Feb 7, 2008 14:26 UTC (Thu) by aleXXX (subscriber, #2742)
[Link]
Since CMake 2.4.3, released July 2006 (or around that version) the
commands can be written lowercase, with the coming version 2.6 this is
even the preferred style (i.e. which is used in the documentation).
Alex
LCA: Disintermediating distributions
Posted Feb 7, 2008 21:28 UTC (Thu) by nix (subscriber, #2304)
[Link]
YES! (Time to upgrade. Is my cmake really that old?
... 2.4.1. dammit.)
LCA: Disintermediating distributions
Posted Feb 7, 2008 22:10 UTC (Thu) by aleXXX (subscriber, #2742)
[Link]
2.4.1 was a beta version, a lots of bugs were fixed for 2.4.3. Version
2.4.8 has been released a few weeks ago, I recommend you use this. If
there is no package for your distro, just download the binary package
from www.cmake.org and just unpack it in some place you like, it will
work.
Alex
LCA: Disintermediating distributions
Posted Feb 7, 2008 23:19 UTC (Thu) by nix (subscriber, #2304)
[Link]
Yeah, like I said, it was really stupid of me not to upgrade. In fact I've
*got* a more recent version installed: it's just this bloody old version
in /usr/local/bin was hiding it... *sigh* chkdupexe time, I think.
LCA: Disintermediating distributions
Posted Feb 7, 2008 20:24 UTC (Thu) by vapier (subscriber, #15768)
[Link]
i didnt say it wasnt working *for them*. they probably wouldnt have made the build system
change if it wasnt working *for them*. the trouble is when *anyone else* tries to build the
package. you want to cross-compile it ? build it on a different platform ? build with your
own compiler/flags ? sorry, but the $flavor-of-the-month build system never thought of that.
time to go re-implement the wheel even though autotools already had it solved.
LCA: Disintermediating distributions
Posted Feb 7, 2008 21:47 UTC (Thu) by nix (subscriber, #2304)
[Link]
The worst I've found for this is Boost.Jam. It should *not* take 7Kb of
diffs and a kilobyte of build-system shell scripting to do the equivalent
of setting --prefix and CXXFLAGS when building Boost!
LCA: Disintermediating distributions
Posted Feb 7, 2008 22:17 UTC (Thu) by aleXXX (subscriber, #2742)
[Link]
I'm not sure I get your point here, so I just state what cmake offers
here:
CMake cvs (2.6.0 will be released soon) supports cross compiling (without
scratchbox or any other emulators, but of course it can also be used
inside scratchbox).
If you want to use your own CFLAGS/CXXFLAGS with CMake, you have at least
two ways to do it:
set CFLAGS/CXXFLAGS when you run cmake, cmake will use them.
Or, later on, run "make edit_cache" and edit the
CMAKE_C_FLAGS/CMAKE_CXX_FLAGS directly to what you want.
If you build the software on some system where it has never been built
before it may very well be necessary that you have to do something on the
buildsystem, add some more checks, add some other locations, other names
for libraries (e.g. z lib has a lot of different names on Windows). I
guess this is true for any buildsystem.
Alex
LCA: Disintermediating distributions
Posted Feb 7, 2008 22:40 UTC (Thu) by vapier (subscriber, #15768)
[Link]
your comment backs up my point. all of these alternative build systems consistently re-solve
the exact same problems that autotools solved eons ago.
cmake *just* added support for cross-compiling (and it isnt even in any released version) ?
without even looking at anything else about cmake, that tells me the project is useless to me.
i'm not saying my needs are the same as everyone out there, just that you cant champion a
replacement for autotools if it isnt a replacement. i'm glad *you've* found it useful, but if
your target compiling audience is more than just you, then i feel sorry for those poor chaps
(where chaps != you).
the things i cite are just common examples ive come across quite frequently when dealing with
non-autotooled packages as a distribution maintainer (whether it be cmake or scons or hand
rolled or whatever). they certainly a complete list. i imagine there are numerous other
portability fixes autotools has which these "replacements" lack.
LCA: Disintermediating distributions
Posted Feb 7, 2008 23:22 UTC (Thu) by nix (subscriber, #2304)
[Link]
autoconf-generated configure scripts also support the godsends which are
site-config files. Nobody else seems to remember about that, which means
you need to wrap another build system around your build system just to get
your CFLAGS et al consistent.