【问题标题】:Does scons customized decider function require to be class member?scons 自定义决策函数是否需要是类成员?
【发布时间】:2016-10-04 15:23:47
【问题描述】:

我从互联网上搜索了如何在 scons 中编写我们自己的决策函数,关于如何/何时重建源文件,如下所示:

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' is not defined?

这个例子脚本是一个specific_part_of_file_has_changed的函数调用,是不是scons自己的文件可以被任何pythong语句调用?

【问题讨论】:

    标签: python class member scons self


    【解决方案1】:

    名称self 未定义,因为文档中有错字。决策者的第二行应该是:

    if dependency.get_timestamp()!=prev_ni.timestamp:
    

    实现specific_part_of_file_has_changed() 方法(或任何类似的一系列步骤来确定文件是否已更改)完全取决于您……“客户”。毕竟你确实想要一个“自定义决策者”,对吧? ;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 2020-03-13
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多