当SCons将工件从缓存目录(由CacheDir提供)复制到使用的硬链接时,我正在试图弄清楚如何覆盖这种行为。
我目前的尝试
def link_or_copy_file(class_instance, src, dst):
# do hardlinking instead...
SCons.Defaults.DefaultEnvironment()._copy_from_cache = link_or_copy_file
SCons.Defaults.DefaultEnvironment()._copy2_from_cache = link_or_copy_file
env = Environment()
env._copy_from_cache = link_or_copy_file
env._copy2_from_cache = link_or_copy_file对env的后续使用没有影响。函数link_or_copy_file从未被调用。怎么啦?
难道不可能以这种方式覆盖Python类成员函数吗?
Update:还请注意,在调用env.Decider()之后,我正在执行此操作,因为该函数可能会覆盖成员_copy_from_cache和_copy2_from_cache。
发布于 2015-01-15 14:30:49
我们终于明白了
import SCons.Environment
SCons.Environment.Environment._copy_from_cache = link_or_copy_file
SCons.Environment.Environment._copy2_from_cache = link_or_copy_file起作用了。
https://stackoverflow.com/questions/27866811
复制相似问题