2012-06-13 10 views
6

コンパイル後に生成されたプログラムファイルを親ディレクトリに自動的にコピーしようとしています。コンパイル後にプログラムを親ディレクトリにコピーする

これを試しましたが、これはうまくいきません。

env.Program("program_name", [ "file1.cc", "file2.cc" ]) 
Copy("../program_name", "program_name") 

どうすればSConsでこれを行うことができますか?

答えて

8

より良いアプローチは、このように、ターゲットとコマンド()ビルダーを使用することです:

prgTarget = env.Program("program_name", [ "file1.cc", "file2.cc" ]) 
Command(target = "../program_name", 
     source = prgTarget, 
     action = Copy("$TARGET", "$SOURCE")) 

や状況に応じて、Install() builderを使用して、このような:

prgTarget = env.Program("program_name", [ "file1.cc", "file2.cc" ]) 
Install("../program_name", source = prgTarget) 
+0

+ 1これは、インストールビルダーのための良い仕事のように思えます。コマンドビルダーを使用すると、コードが複雑になるのです。コマンドビルドに利点がある場合は、どのような状況を知っていますか? – daramarak

+0

@daramarakでは、Command()ビルダーはスクリプトなどのコマンドでも使用できるので、柔軟性があります。Install()ビルダーは、1つまたは複数のファイル/ターゲットを「インストール」(コピー)するためのものです。 – Brady

+0

Command Builderは柔軟性がありますが、Install Builderの代わりにファイルをコピーする場合にCommand Builderが優先されるべきかどうかは疑問でした。 – daramarak

関連する問題