
David Abrahams wrote:
Kevin Wheatley <hxpro@cinesite.co.uk> writes:
David Abrahams wrote:
On the Boost.Build list we were just discussing the fact that some people otherwise inclined towards Boost have chosen Scons over Boost.Build. It would be useful for us to understand some of the reasons why, if some of you wouldn't mind letting us know. No flames, please!
not a flame, but some test results (Noel Llopis' Blog) shows a few interesting results:
http://tinyurl.com/7fdns (www.gamesfromwithin.com)
These are updated from previously.
Wow, harsh. The numbers aside, I think his commentary is rather flame-ish.
I thought it was harsh as well. Here are a few comments: Ant/Rant outperform Jam on full builds even though he claims Jam is the fastest performing build system. BBv2 and SCons are aimed at being truely platform independant, i.e. one script will work for everything, whereas the others need work on your part to get that or only support one target. I agree with him that there is a learning curve when learning Jam/BBv2, but you get this with learning any new language. He says to avoid BBv2/SCons because of performance, but performance is only one factor. [As a note, how much of a performance penalty is there from BBv2 and SCons being built on top of and run from a scripting engine?] What I like about BBv2 is that I can create a hello world application in 1 minute! The jam file: exe hello : hello.cpp ; install . : hello ; # copy hello.exe to this directory hello.cpp: #include <iostream> int main() { std::cout << "Hello World!" << std::endl; return 0; } and most of that is writing hello.cpp! With this, I can now build debug and release versions - and build on any supported C++ compiler/platform - as easily as changing the command line, BBv2 takes care of the rest. Make and Jam don't give you this out of the box. I have lost count of the number of times I have run into problems with incorrect project settings for MSVC projects, most of which are due to the IDE defaulting to the current configuration (debug or release) instead of editing all configurations. BBv2 (and I assume SCons has this as well) allows you to set project wide settings (e.g. include paths) that are inherited by all targets in this directory and below. You can't do this with the other build tools as far as I am aware, or doing so is complex and unmaintainable. Also, BBv2 (and SCons?) works out the build dependancies for you based on how targets are associated, so if you add another dependancy on one of the targets, you don't need to change the build order as you would in *Ant. (MSVC does dependancy analysis, but only for the current solution and you can't nest solution files). It would be interesting to have more data from large build projects and timing/profile data for these. Q: Is it possible to get profiling data for bjam and BBv2 to see what parts of bjam and BBv2 are taking the most time. Also, I don't believe that BBv2 has incremental build support. I wonder what this and pre-compiled header support would do to the timing data. - Reece