SCons: Как использовать тех же разработчиков для нескольких вариантов (выпуск/отладка) программы

Руководство пользователя SCons говорит об использовании Нескольких Сред Конструкции для создания, создают несколько версий единственной программы, и дает следующий пример:

opt = Environment(CCFLAGS = '-O2')
dbg = Environment(CCFLAGS = '-g')

o = opt.Object('foo-opt', 'foo.c')
opt.Program(o)

d = dbg.Object('foo-dbg', 'foo.c')
dbg.Program(d)

Вместо того, чтобы вручную присвоить различные имена к объектам, скомпилированным с различными средами, VariantDir() / variant_dir походит на лучшее решение...

Но если я помещаю Program() разработчик в SConscript:

Import('env')
env.Program('foo.c')

Как я могу экспортировать различные среды в тот же файл SConscript?

opt = Environment(CCFLAGS = '-O2')
dbg = Environment(CCFLAGS = '-g')

SConscript('SConscript', 'opt', variant_dir='release') #'opt' --> 'env'???
SConscript('SConscript', 'dbg', variant_dir='debug')   #'dbg' --> 'env'???

К сожалению, обсуждение в Wiki SCons не приносит больше понимания к этой теме.

Спасибо за Ваш вход!

5
задан OK. 17 March 2010 в 16:15
поделиться

2 ответа

SConscript - это метод, определенный в самой среде:

for dir, env in (('release', opt), ('debug', dbg)):
    env.SConscript('SConscript', 'env', variant_dir=dir)

А затем из SConscript вы можете:

Import('env')
4
ответ дан 14 December 2019 в 13:32
поделиться

Как вариант, вы можете передать словарь в качестве аргумента экспорта в SConscript. Ключи - это имя, которое SConscript будет использовать для его импорта, а значения - это объекты в SConstruct. Итак:

SConscript('SConscript', exports={'env': dbg}, variant_dir='debug')
SConscript('SConscript', exports={'env': opt}, variant_dir='release')

тогда в SConscript Import ('env') получит dbg в первый раз и opt во второй раз. Это также работает для экспорта / импорта всего, что вам нравится, а не только env.

См. Export () и SConscript () на странице руководства для получения дополнительной информации.

2
ответ дан 14 December 2019 в 13:32
поделиться
Другие вопросы по тегам:

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