Почему SCons VariantDir () не помещает вывод в данный каталог?
Я думаю об использовании SCons для нового проекта. Это выглядит очень хорошо, хотя я нахожуVariantDir
довольно странно.
У меня есть простой проект с несколькими исходными файлами C в одной директории, и я хочу создать «нормальный» и «профильный» режимы - с двумя различными наборами опций для gcc. Я хочу, чтобы выходные данные помещались в каталоги normal / и profile / соответственно.
Для тестирования я сократил до одного исходного файла, t.c, который имеетmain()
в этом. МойSConstruct
айл @ находится в том же каталоге и выглядит следующим образом:
normal = DefaultEnvironment(tools=['mingw'], CCFLAGS = '-O2')
normal.VariantDir('release', '.', duplicate=0)
normal.Program('t', ['t.c'])
#profile = normal.Clone(CCFLAGS='-O2 -pg', LINKFLAGS = '-pg')
#profile.VariantDir('profile', '.', duplicate=0)
#profile.Program('t', ['t.c'])
Когда я запускаю scons, я ожидаю, что он поместит t.o и t.exe в релиз /, но он поместит их в текущий каталог. И я не могу запустить его вообще с 3 строками профиля без комментариев - если я это сделаю, я получу эту ошибку:
scons: *** Для одной и той же цели были указаны две среды с разными действиями: t.o
В основном я не уверен, почему мои вызовы VariantDir () не говорят scons, чтобы поместить вывод в указанную выходную директорию,release
.
(Я довольно много читал в документах и новостных группах, но ничего, что могло бы ответить на этот вопрос. Самое близкое, что я получил, этоэта страниц, которая описывает похожую вещь, но включает в себя отдельный каталог src / и два отдельных файла scons, а также импорт / экспорт переменных между ними. Это не кажется приятным.)