[CMake-Promote] Re: [Sweng-gamedev] Multi-platform build/project configurations

Brandon J. Van Every bvanevery at gmail.com
Tue Apr 3 13:51:58 EDT 2007


Squirrel Eiserloh wrote:
> We are playing around with different project/build configurations in
> order to find the least of evils.  Our current operating assumption is
> that the cleanest way to do this is to use a general makefile-based
> approach for all platforms, since there are exceptions (PS3, Mac, etc)
> that complicate project unification for us. 
>   

Well how about CMake?  http://www.cmake.org  It generates Makefiles and 
Visual Studio files equally well.  "Frameworks" (whatever those are) on 
Mac OSX aren't supported, but the CMake developers are willing to deal 
with it as more people keep asking about it, so I expect it to happen in 
the future.  The CMake source code is BSD licensed, so you can use it as 
the basis for anything custom you want to do.  Of course, the CMake 
community would hope that you do things that benefit others, so that 
others can benefit you, but it's not essential.

I've noticed a recurring pattern with some developers who evaluate 
CMake.   They throw a few days at CMake, get stuck, get frustrated, 
never ask any questions on the CMake mailing list, throw their hands in 
the air, bag it, start writing their own homebrew scripts to do their 
build system, and then become happy again.  I'm concerned that such 
developers are seeking short-term psychological satisfaction, rather 
than long-term practical results.  That is, "I'd rather write Python / 
Ruby / Perl code, because I already know how to do it."  Completely 
leaving aside whether such an approach will scale to reach the goal, or 
whether it makes any financial sense to partially or fully reinvent the 
wheel.  I see a really big problem when developers are getting paid to 
write scripts.  They will script, script, script, script, script and 
make it look like there's some kind of justification for what they're 
doing.  I don't get paid a dime for my build system stuff.  So I'm very 
interested in doing as much as I can with as little as I can, and 
getting the CMake authors to add features if need be, rather than me 
doing it myself.

The CMake community is going to try to come up with some white papers, 
articles, and other data points about why the "let's script it all 
ourselves" approach is not such a hot idea.  If we can actually 
demonstrate that.  I'm certain that CMake is better than homebrew 
scripting for some projects.  It can't be so for all projects.  But 
there should be a criteria for whether your project is "special" or not, 
and just how "special" it is.  Programmers like to think that they're 
special, that their needs are unique, that they should do everything 
from scratch because their personal vision is the best way to solve the 
problem. Or just because it's more fun to do it their way, better or 
not!  Generally this is what we need managers for, to rein guys like 
this in.  I mean geez, a build system?  They're not glamorous projects.  
Can't we learn to save the Not Invented Here impulse for something more 
important, like our game design code?


Cheers,
Brandon Van Every



More information about the CMake-Promote mailing list