1

小さなC++プロジェクト用にMakefileをRakefileに変換しています。*.hファイルと*.cppファイルを含むsrcdirと、すべての* .oが入るobjdirがあります(srcにそれらを含めたくありません)。レーキルールでそれを行う方法は?

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

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
4

1 に答える 1

2

ここから無断転載

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

おそらく問題は、あなたの例が特定のファイルが配置されている場所を混在させようとしているという事実にあり、その場所に関係なく何らかの拡張子を持つファイルを処理するために必要なルールがあります。

于 2010-11-25T00:40:58.050 に答える