Я пытаюсь получить иерархическую сборку, работающую в SCons. Структура каталогов выглядит следующим образом:.Передача целей между файлами SConscript
code/SConstruct
code/src/SConscript
code/src/main.c
code/src/foo.c
code/src/bar.c
code/src/tests/SConscript
code/src/tests/test_foo.c
code/src/tests/test_bar.c
тест _ * C должна быть связан с С-файлами, которые реализуют функции, которые они проверяют, поэтому test_foo.c должен быть связан с foo.c, например. Таким образом, src/SConscript должен вернуть несколько целей обратно в src/tests/SConscript, чтобы он мог создавать двоичные файлы (по 1 для каждого теста). Мой вопрос в том, что лучший способ выполнить это с помощью функции Return()? Я хочу, чтобы порядок возвращаемых файлов не имел значения, поэтому кортеж не будет работать. Моя мысль заключалась в том, чтобы построить словарь с ключами, являющимися именами файлов. Я хотел проверить, что не было лучшего способа сделать это; возможно, я могу структурировать файлы по-разному, чтобы упростить сборку?
Спасибо заранее,
У меня похожая ситуация, но моя структура реж пологий: просто 'SRC /' и 'SRC/тест '. Проблема в том, что я хочу, чтобы '# src/foo.c' был создан в альтернативном каталоге, но он создается в' src/'. Мой SC-скрипт верхнего уровня вызывает «SConscript (« test/SConscript », variant_dir = 'build', exports = 'env', duplicate = 0)'. test/SConscript вызывает 'env.Program (target = 'test_foo', ['test_foo.c', '# src/foo.c'])'. Когда я строю, я получаю 'src/build/test_foo',' src/build/test_foo.o', которые являются правильными. Но я получаю 'src/foo.o' вместо' src/build/foo.o'. Что я делаю не так? – cklin
@cklin, Похоже, что «foo.c» строится правильно для src, но снова создается для «test_foo». Попытайтесь ссылаться на 'foo.o' при создании 'test_foo', например: env.Program (target = 'test_foo', ['test_foo.c', '# src/build/foo.o']) – Brady