2010-11-25 6 views
1

小さなC++プロジェクトでMakefileをRakefileに変換しています。私は* .hと* .cppのファイルとobj dirを持つsrcディレクトリを持っています。すべての* .oはそこにあります(私はそれらをsrcに入れたくありません)。レイクルールでそれを行うには?C++プロジェクトでのRakefileルール

これは問題なく動作しますが、一般的なルールが必要です。

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

これは "依存ルールを処理する方法を知ってはいけない:/src\/(\w+).cpp/" 返しhere

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

から臆面もなくコピーされ

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

答えて

2

たぶん、問題は、あなたの例が、特定のファイルがどこにあるかにかかわらず、何らかの拡張子を持つファイルを処理するために必要なルールと、特定のファイルがどこにあるかをミックスしようとしていることにあります。

+0

あなたが提示したようなルールがありますが、それはうまくいきますが、別のディレクトリにファイルをコピーしないでください。 – Nazgob

+0

あなたが添付したリンクが私の質問に答えました。 – Nazgob

関連する問題