[CMake] Good work

Brandon J. Van Every bvanevery at gmail.com
Sun Dec 11 20:09:45 EST 2005


sidibé soro wrote:

>
> Hil all 
>  Very good work
> But i still am searching the magic
>tool able to translate an entire project built with the gnu autoconf
>autotool  system to a visual c++ project
>  This will be a real cross platform system
>  
>  CMAKE can do it when it will be able to import an existing  Makefile  or  able to read    a Makefile.am  file
>  
>
As a recent convert to CMake, who has chewed on his share of GNU 
Autoconf woe over the years, here is my comment.  CMake offers a similar 
model of functionality as GNU Autoconf.  CMake actually works as 
advertized, i.e. it is truly cross-platform, handles both GCC and VC++ 
gracefully, etc.  The GNU Autoconf guys will never, ever enable this.  
At least 2 different open source solutions exist to provide an Autoconf 
frontend for VC++.  I offered to collect those up and make 'em workable; 
the GNU guys refused.  They do not want cross-platform to work, they 
want Windows to wither away and die for lack of support.  They 
explicitly stated in their responses that my suggestions and offers 
"would harm the GNU mission."  I really didn't realize what zealots the 
FSF are, until I got on the Autoconf mailing list and got a first hand 
education in it.

So, CMake and GNU Autoconf do not have identical models of operation.  
They will *NEVER* have identical models of operation, because their core 
political philosophies are different.  Given this, I see no reason why 
CMake should struggle to be plug-n-play compatible with GNU Autoconf.  
This is rather much like trying to chase Microsoft APIs; Microsoft will 
deliberately try to break you.  It suffices that, once one has gone up 
the CMake learning curve, porting from Autoconf builds to CMake builds 
is fairly straightforward.  There are a few paradigmatic differences to 
overcome, but not many.  Such is the burden of truly cross-platform 
support, i.e. you can't make a silk purse out of an Autoconf sow's ear.

I feel, frankly, that what CMake really needs is more marketing.  
Despite being a proven tool, it is very much in the "CMake?  I think 
I've vaguely heard of that" stage.  The marketing effort also needs to 
educate, so that people like yourself come to understand the goals of 
CMake, the benefits, and the realities of cross-platform support.  
Nobody said that CMake takes Makefiles and turns them into Visual Studio 
files.  Even Microsoft doesn't do that anymore, for a long time now.  
The paradigms are different, and it takes programmer decisions to patch 
over what's different.  Trying to do it automagically is hard, and not 
worth the industrial effort, especially since various powers-that-be 
will try to ruin your work.  CMake does an excellent job of providing a 
common format; it should be recognized and praised for what it is.

I am willing to participate in CMake marketing efforts.  That is, trying 
to create awareness, materials, organization, and documentation 
necessary for that, etc.  I'm not willing to lead such things, but I'm 
willing to plug myself into whatever is already going on.  Currently I 
work on CMake builds for Chicken Scheme and hopefully we'll soon have 
that in first class shape.

In the past I've tried to make such efforts in the Python and OCaml 
communities, in conjunction with others.  Unfortunately, in both cases 
we ran into people who didn't understand the value of marketing, nor the 
dimensions of necessary work.  This is typical among hardcore techies, 
who are better versed in code innards than visual art, writing, or 
sociological manipulation.  And so Python and OCaml will continue to 
grow in "techie meritocracy" fashion for the forseeable future.  It is 
particularly frustrating in the case of Python because it's been ready 
to hit the bigtime for a few years now.  If you contemplate the 
aesthetics of http://www.python.org, you will realize what an 
unfortuante state Python marketing efforts are in.


Cheers,
Brandon Van Every
RTFM ISA PITA




More information about the CMake mailing list