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
не изменяет имена, передаваемые построителю, т. Е. Они все еще относятся к каталогу верхнего уровня.