2014-09-19 61 views
1

我愿做一个SCons的生成器输出的一些后期处理:嵌套使用SCons生成器

env = Environment() 
bld = Builder(action = 'postproc $SOURCE $TARGET') 
env.Append(BUILDERS = {'PostProc': bld}) 
prog = env.Program('foo.c') 
env.PostProc('foo.pp',prog) 

可正常工作。但是,我宁愿使用一个生成器调用,所以我想我可以窝这样的:

env = Environment() 
bld = Builder(action = 'postproc $SOURCE $TARGET') 
env.Append(BUILDERS = {'PostProc': bld}) 

def build_pp(env, target, source): 
    prog = env.Program(source) 
    return env.PostProc(target,prog) 

bld2 = Builder(action = build_pp) 
env.Append(BUILDERS = {'BuildPP': bld2}) 

env.BuildPP('foo.pp','foo.c') 

但可理解的结果是:

scons: *** [foo.pp] Multiple ways to build the same target were specified for: foo.pp (from ['foo.c'] and from ['foo']) 

任何想法如何这可能实现吗?

回答