From: Stefan Lang Date: 2005-12-07T05:00:06+09:00 Subject: Re: Recursive Rake On Tuesday 06 December 2005 17:14, Tanner Burson wrote: > Hello all, > > I'm working on a very large set of build tasks for several .NET > projects. I've come up with a fairly simple rake script that with > slight modification (differing includes, resources, output type, > etc) is able to build any of the projects individually. > > The problem is that I'm now to the point of building the larger > outer project, which will in turn need to build several of the > inner library projects. I'm unsure of the best way with Rake to > handle this. > > I know that with Make you could effectively recurse the > directories, each having their own make files and use those to > build the individual dependencies. I could simulate this behavior > in Rake, but I'm not sure it's neccessarily the best way. I'd also > wondered about including the rakefile from the inner projects and > just use the tasks from those in the outer file. A > > nyone who has experience with this, or just ideas on how to handle > this, I would appreciate comments. Thanks! Perhaps you want to try Rant, which is an alternative to Rake. It has all features of Rake and more. Support for the problem you described is built in to some degree. Assuming there is a directory that contains the "inner projects", it could have an Rantfile looking like: inner_dirs = ["inner_project_1", "inner_project_2"] desc "Run tests for all inner projects." task :test => inner_dirs.map { |n| "#{n}/test" } # load Rantfiles of inner projects subdirs inner_dirs And all inner project directories have an Rantfile that defines a "test" task, e.g. inner_project_1/Rantfile contains: task :test do sys "command to run tests for this inner project" end Then from the outer directory, you can type: $ rant test to run the tests for all projects. To run the tests only for inner_project_1: $ rant inner_project_1/test or: $ cd inner_project_1 $ rant test Rant homepage: http://make.ruby-co.de Feature comparison to rake: http://make.rubyforge.org/files/doc/rant_vs_rake_rdoc.html Regards, Stefan