SCons は、ファイルのグループから zip ファイルを生成する Zip ビルダーを提供します。たとえば、foo
次のようなフォルダがあるとします。
foo/
foo/blah.txt
foo.zip
フォルダーからzip ファイルを作成しますfoo
。
env.Zip('foo.zip', 'foo/')
これにより、zip ファイルが生成されます。
$ unzip -l foo.zip
Archive: foo.zip
foo/
foo/foo.txt
ただし、VariantDir
foo を含む of barを使用しているとします。
bar/
bar/foo/
bar/foo/foo.txt
にいるため、VariantDir
効果がわずかに異なりますが、同じコマンドを使用して zip ファイルを作成します。
env.Zip('foo.zip', 'foo/')
これにより、zip ファイルが生成されます。
$ unzip -l bar/foo.zip
Archive: bar/foo.zip
bar/foo/
bar/foo/foo.txt
問題はbar/
、zip 内の各ファイルの追加のプレフィックスです。これが SCons でない場合、簡単な解決策は cd してbar
そこから zip を呼び出すことですcd bar; zip -r foo.zip foo/
。ただし、これは SCons では奇妙/困難であり、とにかく非常に SCons らしくないようです。より良い解決策はありますか?