SCons提供了一個Zip構建器來從文件組生成壓縮文件。 例如,假設我們有一個看起來像這樣的文件夾foo
:如何使SCons不在zip文件中包含基本目錄?
foo/
foo/blah.txt
,我們從一個文件夾foo
創建的zip文件foo.zip
:
env.Zip('foo.zip', 'foo/')
這將產生一個zip文件:
$ unzip -l foo.zip
Archive: foo.zip
foo/
foo/foo.txt
但是,假設我們使用的是一個VariantDir
的酒吧,其中包含foo:
bar/
bar/foo/
bar/foo/foo.txt
因爲我們是在一個VariantDir
,我們仍然使用同樣的命令來創建壓縮文件,即使它有稍微不同的效果:
env.Zip('foo.zip', 'foo/')
由此產生的zip文件:
$ unzip -l bar/foo.zip
Archive: bar/foo.zip
bar/foo/
bar/foo/foo.txt
問題是zip中每個文件的額外bar/
前綴。如果這不是SCons,簡單的解決方案是cd到bar
並從那裏撥打電話,如cd bar; zip -r foo.zip foo/
。然而,這對SCons來說很奇怪/困難,並且無論如何看起來都非常不像SCONS。有更好的解決方案嗎?
這個問題不指定zip文件的目錄,它是我想補充...目錄不,我沒有在一個SConscript文件目錄。該目錄正在創建時創建,然後我想在原地壓縮其中一個創建的文件夾。 – Xymostech
@Xymostech,對,我重新回答了答案。我知道你指的是將文件/目錄添加到壓縮文件中。您可以使用從構建器返回的目標,而不是指定目錄。如果你包含SConscript,我可以看看。 – Brady
我試過使用從生成器返回,並且仍然無法正常工作。代碼如下:https://gist.github.com/2822868 – Xymostech