From: Brock Rycenga Date: 2008-10-23T00:41:00+09:00 Subject: Rake: How do I Override Var's Used by a Rule? 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/.