【发布时间】:2018-10-20 04:23:00
【问题描述】:
我想要基于在 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')
运行此脚本会生成两个文本文件,内容分别为“lemon”和“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 脚本中影响目标的更改?
这可能是一个非常简单的问题,如果我错过了一些明显的问题,请见谅。
【问题讨论】:
标签: scons