[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] understanding the CMake build

From: Brandon J. Van Every
Subject: Re: [Chicken-users] understanding the CMake build
Date: Sat, 09 Sep 2006 12:54:05 -0700
User-agent: Thunderbird (Windows/20060719)

Thomas Chust wrote:

Not only is the CMake documentation scarce, it also frequently seems to be wrong and in the past four weeks I have not managed, even after modifications in the CMakeLists.txt files, to get two large CMake powered projects, namely CHICKEN and VTK, to build using CMake 2.4.3 on either

   - MacOS X using gcc-3.3
   - MacOS X using gcc-4.0

As I don't have a Mac, and I don't really know the quality of CMake's MacOS X support, it wouldn't surprise me if there are troubles here. Felix, don't you have a Mac? Not trying to add to your burdens, but we do need someone around here who can test on the Mac at least occasionally.

   - Windows XP Professional using MinGW gcc-3.2 and MSYS
   - Windows XP Professional using MinGW gcc-3.2 without MSYS

Chicken isn't building on these 2 platforms?? This shocks me. Granted I use Windows 2000, but I build on MinGW / MSYS all the time. It's my canonical build platform. Please report any errors on MinGW / MSYS forthwith. If these aren't building out of the box then something is gravely wrong. I hope you're just having troubles with VTK here and not Chicken.

   - Windows XP Professional using Open Watcom 1.5

The support for Watcom in CMake is very recent, and I haven't tested with it. If it is important to you, and you're willing to test regularly the way John Cowan is testing on Cygwin, then I'll set up Watcom and deal with problems as you report them. Otherwise, I do very much regard Watcom as a fringe compiler. Not something I'll support without at least 1 consumer who definitely needs the support and is willing to help with the testing.

Similar offer for any Borland aficionados.

Everytime at least the linker flags are terribly messed up in some creative ways I could never devise when writing a Makefile by hand ;-)

Are you speaking of VTK here? Chicken just doesn't have that many linker flags, so I have trouble imagining how they could become tremendously perverted.

I'm especially amazed how CMake manages to screw up Java compiler and archiver flags as the JDK tools are really easy to use and have the same command line options on every platform.

CMake is a C/C++ oriented build tool. Java support is pretty recent and I wouldn't expect much from CMake at all. I think it's good that CMake wants to expand its horizons to other languages, but the reality is Java is well served by Ant. It makes little strategic sense for CMake to try to fight Ant on its home turf, at least for now. Anyways, I must admit I personally don't care about Java or C#. That's why I'm working on Chicken. If Java and C# integration are important to your needs, Bigloo Scheme is the better project as it has C, Java, and C# capabilities. I went to Chicken because it has a larger community, some C++ support, a BSD license rather than GPL, Windows builds under source control (Bigloo *still* doesn't have this), and is almost as fast as Bigloo.

Plus I only managed to get one of my own software libraries to build using CMake with so many tweaks and tricks in the CMakeLists.txt file that I felt the urge to promptly throw away this new build system when I saw that the one CMake build control file was by far larger than the hand written Makefiles for all the platforms I need to support together!

Hrm. Yeah, CMake is better than Autoconf but it ain't perfect yet. I think it will get there. Every minor release brings major improvements; more "stupid stuff" goes away. When I got started on Chicken, I thought CMake 2.2 was a disaster. If CMake had stayed like that, I would have called it a failed technology and moved on. But it didn't! The Kitware guys rapidly fixed all my major objections. I was able to use CMake 2.3 in CVS and things were fine. I've had a few annoying workarounds in CMake 2.4.3, concerning Cygwin library names, and also the need for a /static subdirectory, but that's it. From my build perspective there aren't too many warts remaining. The one I really wish they'd cure, is to unify the notion of file dependencies with the notion of target dependencies. That is unnecessarily idiosyncratic, but they're dealing with the realities of their implementation and they just can't move fast on that problem.

I've not completely given up on CMake, yet, but I'm starting to get slightly annoyed and to wonder which platforms this supposedly cross platform make tool is working on at all...

Not that the GNU autotools would be any easier to use than CMake, but at least every autotools configured build system I have met so far worked out of the box on at least one of the platforms mentioned above...

Well, if Automake is still working for you on Chicken, realize, that's in part because I got in there over the past 3 weeks and unified it with the CMake build. I made Automake do the same things CMake does, to the degree that Automake's notion of a build could be made the same. So I'm saying, Automake is not any better and CMake is not any worse as far as what they're doing for Chicken right now. Now, if Automake breaks, feel free to yell at me. It could be my fault; that said, Felix has made some changes too. Don't yell at Felix though. :-)

Brandon Van Every

reply via email to

[Prev in Thread] Current Thread [Next in Thread]