2010-11-25 35 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