问题:
我有2个源目录,一个在“当前”目录中,另一个在其他目录中“
1:C:/ somedir / dir_a / [win32,win64] / [测试,文档,a,b]
和
2:D:/ projects / project_a / api / [win32,win64] / [tests,a,b,c]
sconstruct @ D:/ projects / project_a / sconstruct
现在我想将两个目录放在zip文件中,根目录为“win32”。 目录2(D:/ ..)已经在sconstruct中复制了win32文件夹+内容,这意味着(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 :(得分:1)
找到解决方案:
大家好,
为我没有root的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)])
希望这有助于将来遇到类似问题的其他人:)