该waf书显示,我可以创建一个任务生成器来复制文件:
def build(ctx):
ctx(source='wscript', target='foo.txt', rule='cp ${SRC} ${TGT}')
这将导致一个目标,显示为
waf configure list
,称为foo.txt
。这样我就可以执行以下操作:waf configure build --targets=foo.txt
一切都很好。
但是,假设我要复制(例如200个文件)以填充build目录中的目录,我们将该目录称为
examples
。如果我对200个文件中的每个重复一次,我将有200个目标,因此,当我键入
waf configure list
时将获得200个目标,由于输出的爆炸性增长,waf configure list
实际上将变得毫无用处。但是我真的希望将这200个文件的复制作为一个目标,以便我可以执行
waf configure build --targets=examples
之类的操作。我怎样才能做到这一点??? 最佳答案
使用buildcopy
工具:
import buildcopy
...
def build(ctx):
ctx(name = 'copystuff',
features = 'buildcopy',
buildcopy_source = ctx.path.ant_glob('examples/**'))
这将把
examples
目录树递归复制到build
目录。仅引入一个目标copystuff
。顺便说一句,如果要复制一个文件:
ctx(features = 'subst',
source = '...', target = '...',
is_copy = True)
比调用系统的
cp
命令更好。关于python - 仅使用单个目标在WAF中复制多个文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45652196/