2

当 Sconstruct 文件本身发生变化时,有什么方法可以让 scons 强制构建所有目标?

(原因是如果我更改构建设置,我不能依赖以前构建的文件与新的构建设置保持一致)

4

1 回答 1

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 不重建我的目标?”。无论哪种方式,您可能都需要考虑所涉及的真正依赖关系,而不是添加一个人为的依赖关系来尝试强制重建。

于 2009-09-17T12:42:29.907 回答