SCONS: создание специального компоновщика скриптов зависит от вывода другого компоновщика - PullRequest
2 голосов
/ 06 сентября 2010

Я надеюсь, что заголовок разъясняет то, что я хочу спросить, потому что это немного сложно.

У меня есть SConscript SCONS для каждого подкаталога следующим образом (делаю это в linux, если это важно):

  • src_dir
    • компилятор
      • SConscript
      • yacc srcs
    • скриптов
      • legacy_script
    • data
      • SConscript
      • файлов данных для yacc

Я использую Option_Dir без копирования, например:
SConscript('src_dir/compiler/SConscript', variant_dir = 'obj_dir', duplicate = 0)

В результате obj_dir после построения yacc будет:

  • obj_dir
    • компилятор
      • compiler_compiler.exe

Теперь вот сделка.
У меня есть еще один SConscript в каталоге данных, который нужно сделать2 вещи: 1. скомпилировать данные с помощью компилятора yacc
2. взять выходные данные компилятора и запустить их с помощью legacy_script, который я не могу изменить
(legacy_script, занимаетВывод скомпилированных данных и сборка некоторых h-файлов для работы другого программного обеспечения)

номер 1 легко получить:
linux_env.Command('[output1, output2]', 'data/data_files','compiler_compiler.exe data_files output1 output2')

Моя проблема - номер 2: КакЯ устанавливаю, что исполнитель сценариев зависит от выходных данных другой цели
. И чтобы прояснить это, мне нужно запустить SCONS (и только в случае изменения compiler_output):
src_dir/script/legacy_script obj_dir/data/compiler_output obj_dir/some_dir/script_output
(использование сценария:legacy_script input_file output_file)

Надеюсь, я дал понять, не стесняйтесь задавать еще несколько вопросов ...

1 Ответ

0 голосов
/ 04 октября 2010

У меня недавно была похожая проблема, когда мне сначала нужно было скомпилировать шаблоны Cheetah, которые затем использовались из другого Builder для генерации HTML-файлов из разных источников.

Если вы определите выходные данные сборки первого компоновщика как источник для второго компоновщика, SCons будет запускать их в правильном порядке и только в случае изменения промежуточных файлов.

Wolfgang

...