Почему делает SCons VariantDir () не помещенный, производят в данном каталоге?

Скажем, вы хотите сжать все папки (подкаталоги) в текущем каталоге.

for root, dirs, files in os.walk("."):
    for sub_dir in dirs:
        zip_you_want = sub_dir+".zip"
        zip_process = zipfile.ZipFile(zip_you_want, "w", zipfile.ZIP_DEFLATED)
        zip_process.write(file_you_want_to_include)
        zip_process.close()

        print("Successfully zipped directory: {sub_dir}".format(sub_dir=sub_dir))
8
задан Ben Hoyt 2 July 2009 в 12:26
поделиться

2 ответа

Да, VariantDir сбивает с толку в scons. Хотя это плохо рекламируется, вы можете поместить как SConstruct, так и SConscript в один и тот же каталог, используя текущий каталог в качестве исходного каталога

# SConstruct
SConscript('SConscript', build_dir='build', src='.')

и

# SConscript
Program('main.c')

. Я никогда не находил способа избежать использования двух файлов, сохраняя при этом рассудок, пытаясь понять вариант dir:)

8
ответ дан 5 December 2019 в 08:25
поделиться

Я смог разделить двоичные файлы в каталоге сборки с помощью этого вызова:

# SConstruct
SConscript('SConscript', variant_dir='build', src_dir='..', duplicate=0)

Если вы хотите поместить двоичные файлы в каталог двумя уровнями ниже, сделайте следующее:

# SConstruct
SConscript('SConscript', variant_dir='build/release', src_dir='../..', duplicate=0)

В основном, предоставьте параметр src_dir в качестве пути из каталога сборки обратно в исходный каталог.

8
ответ дан 5 December 2019 в 08:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: