我从互联网上搜索了如何在scons中编写我们自己的decider函数,以及如何/何时重建源文件,如下所示:
Program('hello.c')
def decide_if_changed(dependency,target,prev_ni):
if self.get_timestamp()!=prev_ni.timestamp:
dep=str(dependency)
tgt=str(target)
if specific_part_of_file_has_changed(dep,tgt):
return true;
return false;
Decider(decide_if_changed)
我有一个hello.c,没问题,但是在运行scons时会出现python错误:
$ scons -Q
scons: *** [o.o] NameError : global name 'self' is not defined
self是提及类成员函数的python关键字。在SContruct文件中,有一个类,但只有一个decision_if_changed函数。问题:
我必须在这里添加课程吗?为什么它会提示python错误说'self'没有定义?
这个示例脚本是一个函数调用specific_part_of_file_has_changed,它是一个scons自己的文件,可以被任何pythong语句调用吗?
答案 0 :(得分:2)
未定义名称self
,因为文档中存在拼写错误。决策者的第二行应为:
if dependency.get_timestamp()!=prev_ni.timestamp:
实施specific_part_of_file_has_changed()
方法(或任何类似的一系列步骤以确定文件是否已更改)完全取决于您......“客户”。毕竟你想要一个“自定义决策者”,对吧? ;)