On Apr 19, 2012, at 2:40 PM, Hongli Lai wrote: > On Thu, Apr 19, 2012 at 7:03 PM, Mark Watson <[email protected]> wrote: >>> To be honest, I prefer the drake semantics as they are closer to make's. >> >> Second that. The option to specify parallel builds for any task is >> handy because the task may not derive from multitask, e.g. it could be >> a file task to build a c library from multiple source files that you >> want to build in parallel. >> >> Personally I've used my own patch to rake to do this, that was before >> drake, but I still use it due to drake having an extra dependency. >> >> https://github.com/watsonmw/rakecpp/blob/master/minusj/minusj.rb > > I agree. I would really love to see a 'make -j' equivalent in Rake.
I went through this just this week, after getting tired of some C++ builds using only 1 core. I first looked at multitask but got stopped by the file dependence issue. Then I did some wider searching and stumbled across drake. Been happy ever since. I used make a lot in the past and always made the effort to make all the dependencies explicit (rather than implicit through dependence list order) so that make -j would work. But a lot of Makefiles don't do this and break with make -j just as many rakefiles would. I can see this being a bigger issue with rake since its expressiveness makes it a lot easier to write things that have side-effects and won't parallelize. (Just like I see people write rakefiles that don't converge: that rebuild artifacts because they haven't described the dependencies correctly.) But in any case, for my part, with (d)rake -j, I don't go back to make anymore at all, which makes my world a little nicer. _______________________________________________ Rake-devel mailing list [email protected] http://rubyforge.org/mailman/listinfo/rake-devel
