For a while now, I've been using SCons to build NetCrypto, and a few days ago, I stumbled upon CMake, which is basically a multiplatform Makefile creator, and I'm starting to wonder if I should switch. CMake looks pretty good and seems to do a pretty good job as far as I can tell, but that will actually remain to be seen. Thing is, to meet my goals, which is to have NetCrypto build on OpenVMS as well, whatever I use will need to be ported, and I've a hard time deciding which would be the easiest. Also, I've a hard time with Python, which is what SCons is made in.

Don't get me wrong, SCons has a cool concept with build recipes made in Python, but that also makes it hard to extend when needed, as there are a gazillion classes to go through when something goes wrong, and quite a bit of confusion when trying to debug anything and then ending up somewhere deep in a file system node layer and wondering how the hell you triggered that particular exception.

As far as I understand the docs for CMake, it basically implements some kind of script language to make configuration tests, define what goes where and just do it. Looks simple enough, and extending it is done by writing another of those scripts, often using very well defined file names.

So I don't know, it looks like CMake is a bit more mature. On the other hand, I shouldn't be surprised. After all, the latest release of CMake is version 2.2.3, while SCons is at version 0.96.1, with 0.97 being around the corner. It indicates that CMake has been through a lot more (or that Kitware Inc wants to make it look that way :-) ), which in itself leads to a certain level of maturity. On the other hand, if you look at the timeline for both projects, it looks like they both started around August 2000, with Another way to look at SCons leaning on Cons and CMake leaning on something called pcmaker, which I know nothing about.

Basically, it's hard to decide, and I need to use something that I feel I can trust fully to invest my time in and to stay with for a while. Wallowing between the two is just counterproductive. I'd appreciate any help from outside people in this, especially good advice.

blog comments powered by Disqus