From: Brock Rycenga Date: 2008-10-23T00:51:12+09:00 Subject: Re: Rake: How do I Override Var's Used by a Rule? As usual, right after I finally decide to post something to a forum, I trip over an answer myself. I found that this seems to do the trick. task :release_build do C_OPTIMIZE_LVL="-o2" C_DEBUG="" Rake::Task[:debug_build].invoke end Is this a good way to do this? Is there a better one? Should I just stop asking questions and move on? Thanks, B Brock Rycenga wrote: > All: > > For our rakefile system, we would like to have the ability to build > either a "debug" version of our code, or a "release" version. My plan is > to have 2 separate high-level tasks, where one of them invokes the other > - except with overridden variables. I wish I knew how to do this. ;-) > Please help. > > Here are my tasks (edited for brevity): > > ============================= > task :debug_build => [:build_depend, :build_obj] do > # handle the linking > end > > task :release_build do > # Invoke the debug_build task, but override the following var's: > # C_OPTIMIZE_LVL="-o2" > # C_DEBUG="" > end > ============================= > > My .c -> .obj rule looks like this: > > ============================= > rule ".#{OBJ_EXT}" => lambda{|objfile| find_source(objfile)} do |t| > sh "#{COMPILER} #{C_OPTS} #{C_DEBUG} #{C_OPTIMIZE_LVL} #{C_OBJ_DIR} > #{C_INC_PATHS} #{C_FLAGS} #{C_TARGET} #{t.source}" > end > ============================= > > So the only difference between the debug_build and release_build tasks > is the compile line. NOTE: I currently read those variables (COMPILER, > C_OPTS, etc.) from another rakefile. > > Any suggestions? Am I going about this the wrong way? > > > > Thanks, > Brock -- Posted via http://www.ruby-forum.com/.