Scons:如何将Decider分配给特定节点?

时间:2018-07-31 00:36:47

标签: scons

我已经尝试过了:

p = env.Program("foo", source);
p[0].Decider('timestamp-match')

但这无法完成对该节点使用时间戳的切换,此外,它导致随后的生成器使用p作为输入来发出错误:TypeError:'str'对象不可调用

1 个答案:

答案 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用户邮件列表上。 ;)