Scons isn't new, it's been around for a big while and I've had the opportunity to use it in a few projects. It's a great build tool, I highly recommend it.
I have used quite a few build tools and scons is the one I keep coming back to for C/C++. Nothing beats being able to bust out python scripting in the middle of describing how your project should build.
Is there any sort of unbiased comparison between the major build systems available (I'm thinking Make, CMake, Scons), which goes beyond the basics into areas where each system has advantages or disadvantages against the competition? I'd also like to see comparable build scripts for a hypothetical project that's not just a simple hello world app. Something that shows the caveats and triumphs of each system in the context of a comparison project would be key.
I've always used Make because it's what I know, it's what the Linux/Unix community tends to use for the majority of projects, and because I don't fully understand the competitors products. However, I've been bitten in the past by quite a few restrictions in Make, but every time I look into the alternatives, I see very few similarities with which to make a comparison judgment, and it seems more practical to just stick with what I know and work around the flaws than to start from scratch with something else that may have just as many limitations as Make...
Is there a recent comparison of cmake, scons and (boost) jam? I personally use cmake and it does its job well, but it has some flaws that aren't being fixed for some time...
I find QMake, even for projects that don't use Qt, really nice for projects that don't need to be packaged up or have complex dependancies. The format is trivial and it does well with generating makefiles, XCode projects or Visual Studio projects.
I would also like to see an informed comparison. In addition to cmake, scons, qmake, and boost, there is also omake, which has an OCaml background but supports C, and waf, another Python build system. After skimming some documentation, I found it harder to compare autotools replacements than to compare various web frameworks. :)
It depends a lot on your project. For large C++ projects, I've found scons and boost jam painfully slow for iterative builds. For smaller things they're possibly nice because they're expressive and pretty simple.
AFAIK, either make or vanilla jam is the fastest for C++, which is by far the most important thing to me, but that'll vary depending on your particular situation.
10 comments
[ 0.30 ms ] story [ 37.0 ms ] threadI've always used Make because it's what I know, it's what the Linux/Unix community tends to use for the majority of projects, and because I don't fully understand the competitors products. However, I've been bitten in the past by quite a few restrictions in Make, but every time I look into the alternatives, I see very few similarities with which to make a comparison judgment, and it seems more practical to just stick with what I know and work around the flaws than to start from scratch with something else that may have just as many limitations as Make...
http://lwn.net/Articles/188693/
I find QMake, even for projects that don't use Qt, really nice for projects that don't need to be packaged up or have complex dependancies. The format is trivial and it does well with generating makefiles, XCode projects or Visual Studio projects.
AFAIK, either make or vanilla jam is the fastest for C++, which is by far the most important thing to me, but that'll vary depending on your particular situation.
This is a bit old, but still accurate: http://www.gamesfromwithin.com/articles/0509/000100.html