强制scons使用Sconstruct文件作为全局依赖项

时间:2009-09-16 21:07:19

标签: scons

当Sconstruct文件本身发生变化时,有没有办法让scons强制构建所有目标?

(推理如果我更改构建设置,我不能依赖以前构建的文件与新构建设置一致)

1 个答案:

答案 0 :(得分:3)

如果您需要将SConstruct添加为您的某个目标的依赖项,那么您要么做错了,要么SCons中存在错误。

例如,如果我们谈论编译标志。假设您要从-O0更改为-O2。在最简单的情况下,您将拥有:

env = Environment(CCFLAGS = '-O0')
env.Program(target = 'foo', source = 'foo.c')

你运行scons,它将foo.c编译为foo.o并从中创建foo(.exe)。如果你把它改成:

env = Environment(CCFLAGS = '-O2')
env.Program(target = 'foo', source = 'foo.c')

然后scons将重建env中定义的所有目标。这是因为命令行是目标的隐式依赖项。因此,更改CCFLAGS将更改依赖关系值,这将重建“foo”目标。

也许你真正的问题更像是“为什么即使我更改了命令行选项,scons也不会重建我的目标?”。无论哪种方式,您可能需要根据所涉及的实际依赖性进行思考,而不是添加一个人为的尝试强制重建。