Почему 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, а также импорт / экспорт переменных между ними. Это не кажется приятным.)

Ответы на вопрос(3)

Ваш ответ на вопрос