0

问题:

我有 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 如下所示:

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

我想要的地方:

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

有没有办法在 Scons 中正确地做到这一点?

4

1 回答 1

1

找到解决方案:

大家好,

为我遇到的无根复制树问题找到了一个合适的解决方案。

使用发现 @ 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)])

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

于 2013-02-27T23:07:16.640 回答