我已经尝试过了:
p = env.Program("foo", source);
p[0].Decider('timestamp-match')
但这无法完成对该节点使用时间戳的切换,此外,它导致随后的生成器使用p作为输入来发出错误:TypeError:'str'对象不可调用
答案 0 :(得分:0)
您不能直接将新的Decider
分配给特定的Node
。您在上面的评论中提到的方法Node.Decider()
具有不同的用途(更多供内部使用*)。
解决方案的关键是您可以将Decider
分配给Environment
。因此,您只需要clone
您的默认环境并使用时间戳决定器在其中创建特殊目标即可。所有其他目标节点应像以前一样使用env
环境。未经测试,从我的头顶...只是给你一个主意:
env = Environment()
env_time = env.Clone()
env_time.Decider('timestamp')
# Use timestamps
env_time.Program('main', 'main.cpp')
# All other stuff, using MD5
env.XYZ()
(*)是的,这引起了一个问题,为什么它会随后在官方API中列出,但这是另一天的讨论……最好是在SCons用户邮件列表上。 ;)