2014-09-19 2 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']) 

이 실현 될 수있는 방법을 어떤 생각?

답변

4

하나의 빌더 (확장 인수 파싱과 결합 될 수 있음)에 여러 빌더를 래핑하는 것은 일반적으로 가상 빌더를 사용하여 수행됩니다. Chapter 20 "의사 작성자 : AddMethod 함수"User Guide과 도구 작성 가이드 http://www.scons.org/wiki/ToolsForFools을 확인하십시오.

관련 문제