2017-08-12 6 views
1

をコピーするWAFの本は、私は、ファイルをコピーするタスクジェネレータを作成できることを示していますのみ単一のターゲットを使用してWAFで複数のファイル

def build(ctx): 
    ctx(source='wscript', target='foo.txt', rule='cp ${SRC} ${TGT}') 

これはfoo.txtと呼ばれるwaf configure listで示した目標、になります。だから私はこのようなことをすることができます:

waf configure build --targets=foo.txt 

これはすべて良いと良いです。

しかし、ビルドディレクトリ内にディレクトリを作成するために、たとえば200個のファイルをすべてコピーするとします。そのディレクトリをexamplesと呼ぶことにします。

私は200個のファイルごとにこれを繰り返すと、私はwaf configure listは200の目標を取得し、waf configure listがあるため、出力の爆発の事実上役に立たないレンダリングされます入力すると、私が述べしたがって、200個の目標を持っているとします。

しかし、実際には、これらの200個のファイルを1つのターゲットにコピーして、waf configure build --targets=examplesのようにすることができます。これどうやってするの???

import buildcopy 
... 
def build(ctx): 
    ctx(name = 'copystuff', 
     features = 'buildcopy', 
     buildcopy_source = ctx.path.ant_glob('examples/**')) 

これは再帰的にbuildディレクトリにexamplesディレクトリツリーをコピーします。

答えて

1

buildcopyツールを使用してください。 1つのターゲットcopystuffが導入されました。余談として

、1つのファイルをコピーしたい場合:

ctx(features = 'subst', 
    source = '...', target = '...', 
    is_copy = True) 

は、システムのcpコマンドを呼び出すよりもずっといいです。

+0

お返事ありがとうございました。 wafのドキュメントは非常に貧弱です。スタックオーバーフローには、より多くの専門家が必要です。 – EMiller

関連する問題