在 scons 中使用 builder 调用自定义函数
In scons call a custom function using builder
我有一个自定义函数,我想使用构建器对象调用它
def generate_action(target, source, env):
print "TRIDIP:::::::I am in"
return None
现在我创建了一个构建器
env['BUILDERS']['generateAction'] = Builder(action = generate_action)
action = env.generateAction()
如您所见,我没有传递任何参数,也不想传递任何未调用我的自定义函数 generate_action() 的参数。我想在不带任何参数的情况下调用该函数。
您必须调用生成器,指定您依赖的结果文件作为源。你不能同时离开 "target=" 和 "source=" 参数,因为 SCons 必须知道这个步骤在整个构建图中的位置。你的 SConscript 应该看起来像(未经测试,从我的脑海中):
# env = Environment()
env['BUILDERS']['generateAction'] = Builder(action = generate_action)
# creates your other result file
myResult = env.someOtherBuilder('out.foo', 'in.txt')
# calls your generate_action method
action = env.generateAction('dummy.txt', myResult)
请注意,这将如何 始终 调用您的 "generateAction" 生成器,因为 "dummy.txt" 从未创建,因此目标永远不会更新日期。
最后,我的猜测是这个答案不会真正帮助您,还会给您带来更多麻烦。当人们试图在构建时调用自定义方法时,他们通常以错误的方式使用 SCons……大多数时候是因为他们没有正确的心智模型来理解 SCons 的工作原理。您可能想阅读用户指南 ( http://scons.org/doc/production/HTML/scons-user.html ) or ask your further questions on our User mailing list at scons-users@scons.org
(see also http://scons.org/lists.php ) 中的一些基础知识。
我有一个自定义函数,我想使用构建器对象调用它
def generate_action(target, source, env):
print "TRIDIP:::::::I am in"
return None
现在我创建了一个构建器
env['BUILDERS']['generateAction'] = Builder(action = generate_action)
action = env.generateAction()
如您所见,我没有传递任何参数,也不想传递任何未调用我的自定义函数 generate_action() 的参数。我想在不带任何参数的情况下调用该函数。
您必须调用生成器,指定您依赖的结果文件作为源。你不能同时离开 "target=" 和 "source=" 参数,因为 SCons 必须知道这个步骤在整个构建图中的位置。你的 SConscript 应该看起来像(未经测试,从我的脑海中):
# env = Environment()
env['BUILDERS']['generateAction'] = Builder(action = generate_action)
# creates your other result file
myResult = env.someOtherBuilder('out.foo', 'in.txt')
# calls your generate_action method
action = env.generateAction('dummy.txt', myResult)
请注意,这将如何 始终 调用您的 "generateAction" 生成器,因为 "dummy.txt" 从未创建,因此目标永远不会更新日期。
最后,我的猜测是这个答案不会真正帮助您,还会给您带来更多麻烦。当人们试图在构建时调用自定义方法时,他们通常以错误的方式使用 SCons……大多数时候是因为他们没有正确的心智模型来理解 SCons 的工作原理。您可能想阅读用户指南 ( http://scons.org/doc/production/HTML/scons-user.html ) or ask your further questions on our User mailing list at scons-users@scons.org
(see also http://scons.org/lists.php ) 中的一些基础知识。