2010-11-25 38 views
1

我正在将Makefile转换为Rakefile以用于小型C++项目。我有* .h和* .cpp文件和obj目录的所有* .o去(我不希望他们在src)src dir。如何用Rake规则做到这一点?C++项目中的Rakefile规则

这工作正常,但我想要一个通用的规则。

rule("#{OBJ_DIR}hello.o" => "#{SRC_DIR}hello.cpp") do |target| 

这将返回 “不知道如何处理规则依赖:/src\/(\w+).cpp/”

rule(/obj\/(\w+).o/ => /src\/(\w+).cpp/) do |target| 
    sh "#{COMPILER} #{FLAGS} -c -o #{target.name} #{target.source}" 
end 

回答

2

here

rule '.o' => '.cpp' do |target| 
    sh "#{COMPILER} #{FLAGS} -c -o #{target.name} #{target.source}" 
end 

无耻地复制也许问题在于你的例子试图混合某些文件所在的位置,以及处理任何带有一些扩展名的文件而不管它的位置的规则。

+0

yup,就是这个问题,我有一个像你提交的规则,它工作正常,但我想有不同的文件夹中的东西没有应对文件周围的 – Nazgob 2010-11-25 09:10:42