Я хочу создавать файлы на основе переменных, которые назначены в файле SConstruct. Как в этом примере:
import os
env = Environment(ENV = os.environ)
def text_file_maker(target, source, env):
with open(str(target[0]), "w") as text_file:
text_file.write(env['my_text'])
return 0
env.Append( BUILDERS = {'Make_text' : Builder(action = text_file_maker)})
env.Make_text(target = 'sour.txt',
source = None,
my_text = 'lemon')
env.Make_text(target = 'sweet.txt',
source = None,
my_text = 'apple')
При запуске этого скрипта создаются два текстовых файла с содержимым «лимон» и «яблоко». Если я снова запускаю скрипт, SCons правильно обнаруживает, что цели существуют:
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
scons: `.' is up to date.
scons: done building targets.
Теперь, если я меняю одну цель, например:
env.Make_text(target = 'sweet.txt',
source = None,
my_text = 'orange')
и запустите скрипт, я получу scons: '.' is up to date.
, а содержимое 'orange' не будет записано в sweet.txt.
Я мог бы указать зависимость:
Depends(['sweet.txt', 'sour.txt'], 'SConstruct')
но это вызывает перестройку для любого изменения в моем скрипте SConstruct.
Как я могу заставить SCons распознавать изменения в скрипте SConstruct, которые влияют на цели?
Это может быть очень простой вопрос, извините, если я пропустил что-то очевидное.