2013-02-26 56 views
0

问题:使用SCons多目录复制/压缩和解

我有2个源目录,一个在 “当前” 目录和一个在其它一些目录”

1:C:/ somedir/dir_a/[Win32中,Win64的]/[测试,文档,A,b]

而且
2:d:/项目/ project_a/API/[Win32中,Win64的]/[测试,A,b,C]

sconstruct @ D:/ projects/project_a/sconstru ct

现在我想将这两个目录放在一个zip文件中,并且根目录为“win32”。 目录2(D:/ ..)有它的win32文件夹+已经复制到sconstruct中的内容,这意味着(afaik)D:/ projects/project_a/api/win32(或win64)已经是目标,只要scons是关心。

我试了一下:

当我再尝试在目录1(C:/ ...)复制到目录2,它根本不会因为目标已经存在。所以这是第一次尝试。

第二次尝试我用env.Zip得到了Zip中的2个目录,这个工作正常,但是他们完全错误。拉链看起来如下:

zip..somedir/dir_a/win32/[tests, documentation, a, b] 
    |.api/win32/[tests, a, b, c] 

在那里我会一直想:

zip..win32/[tests, documentation, a, b, c] 

是否有正确使用SCons这样做的方法吗?

回答

0

找到解决方案:

大家好,

发现的根少copytree问题,我有一个妥善的解决办法。

使用累加器发现@http://www.scons.org/wiki/AccumulateBuilder

然后,只需调用它为:

target = "dir where you want to copy contents of source" 
basedir = "source dir containing content to be copied" 
env.Accumulate(target, [os.path.join(basedir ,x) for x in os.listdir(basedir)]) 

希望这可以帮助别人,将来其他类似的问题:)