On 26/11/2015 17:53, Svante Signell wrote:
On Thu, 2015-11-26 at 17:04 +0000, Roger Leigh wrote:
On 26/11/2015 15:00, Svante Signell wrote:
On Thu, 2015-11-26 at 15:33 +0100, aitor_czr wrote:

Hi, what's wrong with plain GNU make, and the GNU auto-tools?

Nothing is wrong with "plain make", providing that it meets your needs.
   But often you want more than plain make can offer.  There's plenty to
criticise with the autotools, the baroque complexity being the primary
one.  CMake is a big upgrade from the autotools; it's vastly more
featureful and powerful, has better portability for modern systems, and
still works with make when generating Makefiles.  The autotools have
failed to keep up to date with modern portability requirements; the
capabilities CMake has to offer are unmatched at the present time,
though it also has its own warts.  After 15 years of autotools use, I
converted all my stuff to CMake over the last two years, and I'm not
looking back.

Then you are a happy user of cmake. I'm working on porting packages for GNU/Hurd
and every time when I encounter packages using cmake the confusion increases. It
seems almost impossible to find out where to make changes and, the build process
is not traceable. (maybe It's just me :( )

You looked at CMakeFiles/CMake(Output|Error) ? Most stuff should be logged there. And if you need to trace, message(WARNING) will print a trace along with the diagnostic.

I do think there is a lot of confusion about CMake. But I don't think this is due to any intrinsic fault of the tool, it's more due to a general lack of familiarity with how it works (and why) since it's newer than the autotools, which we're all familar with. I remember how confused I was by the autotools back in the late '90s. After spending days reading about all of the internals (autoconf, m4, make, automake, libtool), I finally got how it all fit together and was really pleased when I got my first project working with the autotools. But that success took a *significant* investment of time and effort, and I continued to use and contribute to these tools for several projects over the next 15 years, primarily out of inertia and because they were "good enough" once you'd got past all the complexity.

A couple of years back, starting a new C++ project at work, I had to decide on a build system to satisfy all our requirements. The autotools would have been a candidate were it not for also needing to build on Windows, so I took a fresh look at everything out there, including scons, cmake and several others. CMake was the best of the lot. As for the autotools, I spent several days learning it. I took an existing autotooled project (schroot) which used a lot of autoconf/automake features including custom stuff, and converted it to use cmake over the course of a week. After that investment of effort, I was 90% there in terms of understanding it.

For anyone at home with m4/autoconf/automake/libtool, there's a great deal of similarity with cmake. The main difference is that it's vastly simpler--instead of having several tools, each using a different language and its own set of configuration files and macros, you have one language and one file (which can include others). Other than that, most of the concepts (feature testing, defining targets) are exactly what you already know, just done slightly differently. When working in a team, it's much better since they can make changes without being gurus, and *everything* is in the manual--it's much easier to get into than the autotools.


Regards,
Roger
_______________________________________________
Dng mailing list
Dng@lists.dyne.org
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng

Reply via email to