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
ただし、VariantDirfoo を含む 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 らしくないようです。より良い解決策はありますか?