From: Simon Strandgaard Date: 2006-03-18T02:44:29+09:00 Subject: incremental rebuild with Rake I am using Rake for testing c++ code. Incremental rebuild does not work for .h files, Any ideas? -- Simon Strandgaard require 'rake/clean' APPLICATION = 'test_code.exe' CC = 'g++' LD = CC CFLAGS = [ '-pedantic', '-fprofile-arcs -ftest-coverage', `cppunit-config --cflags`.strip ].join(' ') LIBS = [ `cppunit-config --libs`.strip ].join(' ') CPP_SOURCES = FileList['test_code/*.cpp'] + FileList['code/*.cpp'] O_FILES = CPP_SOURCES.sub(/\.cpp$/, '.o') file APPLICATION => O_FILES do |t| sh "#{LD} #{LIBS} #{O_FILES} -o #{t.name}" end rule ".o" => [".cpp"] do |t| sh "#{CC} #{CFLAGS} -c -o #{t.name} #{t.source}" end CLEAN.include("**/*.o") CLEAN.include("**/*.bb") CLEAN.include("**/*.bbg") CLEAN.include("**/*.da") CLOBBER.include(APPLICATION) CLOBBER.include("**/*.gcov") desc "compile the test executable." task :compile => APPLICATION desc "run all the tests." task :test => APPLICATION do sh "./#{APPLICATION}" end rule ".gcov" => [".cpp"] do |t| path = t.source.sub(/\/[^\/]+\.cpp$/, '') sh "gcov -p --object-directory #{path} #{t.source}" end GCOV_FILES = CPP_SOURCES.sub(/\.cpp$/, '.gcov') desc "output coverage info." task :coverage => GCOV_FILES task :default => :test