SCons - как обеспечить явную зависимость для целей по сценариям - PullRequest
1 голос
/ 16 февраля 2012

Это мой основной файл SConstruct.

env = Environment()

gen_source = env.SConscript(
        'generate_sources.scons',
        variant_dir='derived_src', src_dir='src',
        duplicate=0)
compile_source = env.SConscript('compile.scons',
        variant_dir='build', src_dir='derived_src',
        duplicate=0)
env.Depends('build/', 'derived_src/')

. gen_source - это сценарий с одним целевым источником генератора, который выводит файлы в derived_src/ из моего исходного каталога, а compile_source - это сценарий снесколько целей.

Если цель не указана в командной строке, т. е. запустить scons, она сгенерирует источники, а затем скомпилируется, но если цель указана, например, scons pg_test, то scons не будет работать и пожаловатьсяderived_src/some_file не существует.

Как лучше всего моделировать такое соотношение целей?Предпочтительно я надеюсь изменить его поведение так, чтобы оно генерировало только те источники, которые будут скомпилированы.

1 Ответ

1 голос
/ 16 февраля 2012

В зависимости от того, что вы возвращаете из выполнения SConscript gen_source и compile_source, если это список целей, тогда я думаю, что было бы более разумно установить зависимости следующим образом:

env.Depends(compile_source, gen_source)

Или если выВы не возвращаете список целей, затем, по крайней мере, поместите каталоги относительно корневого SConstruct, например:

env.Depends('#build', '#derived_src')

И еще одним шагом будет указание файлов в этих каталогах,возможно с Glob ()

Надеюсь, это поможет.

...