Mike Jackson wrote:
http://openscenegraph.org/archiver/osg-users/2006-August/0590.html

is the beginning of the relevant thread.

Chris Osborn wrote:
>While the script writing was easy to learn, I quickly found myself
>limited by its API. Anytime I needed a new feature, if CMake didn't
>support it out-of-the-box, I was out of luck :( Delta3D ended up moving
>to SCons since I could write normal Python code to add in any special
>features it lacked. CMake's extensibility may have been improved in
>recent months, so the point may be moot.

I can say that CMake 2.4.x is scads better than 2.2 was. I had problems getting things done in 2.2. The CMake development team is really super sharp and super responsive to users' needs. Basically they got rid of all my major issues in 2.4 and reduced my worries to minor details. CMake development is rapid. On the good side, that means new features come; on the bad side, the documentation lags. But the mailing list is a great resource, people answer questions readily, and that very much makes up for any documentation problems.

>And just in case everyone didn't already know, MS VisualStudio projects
>generated with CMake still use CMake under the hood. So users wanting to
>compile the OSG would always need CMake installed somewhere. It would be
>nice if a tool actually generated a totally native project. SCons is the
>same way... :(

Your frowny face is misplaced. Once you generate that native project, you are *not* done. I *guarantee* you that you're going to change something about your CMakeLists.txt, because you're going to think better of this-and-that as you work on your build system. When you make those changes, you're going to need to regenerate your native project. The hook into CMake allows this regeneration to happen automagically most of the time. Not all of the time; when I'm in doubt, I kill the generated build tree and start clean. But most of the time, under either MinGW or MSVC, things just work. If you didn't have the hook, then you'd always be forgetting that you modified CMakeLists.txt but didn't regenerate, and you'd be most annoyed. Also, the hook usually allows just the necessary dependencies to be regenerated. If, for instance, you change your INSTALL system, it's not going to force you to rebuild everything, although you'll get a lot of relinking.

People have a misperception that having to install anything, no matter how trivial, is bad. This is mirrored by the strange perception that relying on shell scripting for everything is somehow good. It's actually rather fragile, as anyone with serious ./configure experience can attest. Unixen tend to think it's fine because they're used to it, whether it's reliable or not. But non-Unixen have a more pressing problem: shell scripts aren't portable. One of the main values of CMake is it'll do stuff under any major OS, not just a Unix shell. CMake also has a scripting language. It is not as full featured as a Python or Ruby or Perl or whatnot, but it runs everywhere and it gets the job done.

Really, what is needed in a build system, is not so much the best / nicest language in the world. What's needed are build capabilities that actually work and actually do the things people need to do with builds. CMake has all of that. And what it doesn't have, the CMake team can be persuaded to produce. The KDE people switched from SCons for these 2 major reasons, capabilities *and* responsiveness. They weren't getting the job done with SCons, and the SCons developers weren't helping them out. Here again is the article about the KDE switch, http://lwn.net/Articles/188693/ .


Cheers,
Brandon Van Every

_______________________________________________
osg-users mailing list
osg-users@openscenegraph.net
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to