Я хотел бы, чтобы SCons создавал для меня исходные файлы в моем каталоге src/
, а затем создавал их как любой другой исходный файл в моем каталоге сборки build/variantX
.Генерация кода SCons и VariantDir
Это мой SCons файл:
import SCons
def my_builder(env, target, source):
# do stuff
pass
env = Environment()
env.VariantDir('build/variant1/', 'src', duplicate=0)
env.Command('src/foobar.cc', 'src/foobar.input', action=my_builder)
env.Program('bin/test', [
'build/variant1/foobar.cc',
'build/variant1/test.cc',
])
This ошибки со следующим сообщением:
Источник
src/foobar.cc
не найден, необходимо прицельнойbuild/variant1/foobar.o
, которые я не думаю, правильно, учитывая, что я действительно предоставляю команду для сборки src/foobar.cc
.
Теперь я попробовал несколько обходных путей:
, если я заменю
build/variant1/foobar.cc
в программе сsrc/foobar.cc
, он работает, но, очевидно,foobar.o
получает создан вsrc/
, а неbuild/variant1
, если я заменю
src/foobar.cc
в команде сbuild/variant1/foobar.cc
, он действительно работает, но я хотел бы, чтобы код был сгенерирован вsrc/
; (И потому, что такие вещи, как относительные пути в включают каталоги не будут работать, еслиduplicate=1
)если
duplicate=1
, я получаю подобное сообщение об ошибке, но на этот раз упоминая подкаталог варианта:Источник
build/variant1/foobar.cc
не найден , необходимо целямиbuild/variant1/foobar.o
есть ли способ обойти это? Это ограничение/ошибка в SCons, или есть фундаментальное недоразумение на моей стороне?
Вы когда-нибудь находили ответ на эту проблему? Я сталкиваюсь с чем-то очень похожим. – jfritz42