当Sconstruct文件本身发生变化时,有没有办法让scons强制构建所有目标?
(推理如果我更改构建设置,我不能依赖以前构建的文件与新构建设置一致)
答案 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也不会重建我的目标?”。无论哪种方式,您可能需要根据所涉及的实际依赖性进行思考,而不是添加一个人为的尝试强制重建。