Как я могу вынудить разработчика SConscript изменить каталог?

в настоящее время я пытаюсь портировать миллион sloc проектов прежней версии от тусклых .cmd сценариев до SCons. Частями его является VC ++, другие являются Delphi. Создание SConscripts для частей C++ было бризом.

Для создания части Дельфи, я записал очень простому разработчику, который обнаруживает, является ли это проектом библиотеки или программой. Вызов разработчика после объединения в цепочку через SConscript делает сканирования для вызова dcc32$subdir/project.dpr, что вводит в заблуждение dcc32 для поиска единиц в текущем каталоге вместо $subdir.

Существует ли способ сказать сканированиям вводить $subdir прежде, чем выполнить команды, находящиеся в sconscript, или я должен зафиксировать его в разработчике?

Заранее спасибо

5
задан Damg 7 June 2010 в 08:53
поделиться

1 ответ

SCons уже изменяет каталог SConscripts подкаталога при их чтении, поэтому похоже, что проблема должна быть исправлена ​​в реальном построителе.

После того, как сценарии проанализированы и SCons запустит команды сборки, он остается в каталоге верхнего уровня. Затем команды выдаются с использованием имен путей относительно этого каталога верхнего уровня. Способ изменить это поведение - использовать ключевое слово chdir в вашем Builder.

Пример со страницы руководства scons выглядит следующим образом:

b = Builder(action='build < ${SOURCE.file} > ${TARGET.file}',
            chdir=1)
env = Environment(BUILDERS = {'MyBuild' : b})
env.MyBuild('sub/dir/foo.out', 'sub/dir/foo.in')

Вам необходимо указать компонент .file , поскольку использование chdir не изменяет имена, переданные в builder, т.е. они по-прежнему относятся к каталогу верхнего уровня.

5
ответ дан 14 December 2019 в 19:01
поделиться
Другие вопросы по тегам:

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