2017-09-27 1 views
0

나는 약간의 소스 파일을 생성하고, 컴파일 생성 된 파일을 사용하는 트링하고를 생성 찾는데 실패SCons는이 .. 파일

겐이 demo.cc 필요가 생성됩니다
gen = env.Command("/tmp/dummy", "demo.json","demo.py $SOURCE > $TARGET") 
env.AlwaysBuild(gen) 

bin=env.Program(target='demo', source=[Glob("*.cc")]) 
env.Depends(bin, gen) 

세대 =

01을 다음과 같이 데모를 컴파일 할 때 env.Command ("/ tmp를/더미", "demo.json", "demo.py의 $의 SOURCE> $ 표적")

그러나 것은 오류

실패 : 소스 demo.cc' not found, needed by target demo.o '입니다.

ls demo.cc는 필수 파일 demo.cc가 실제로 올바른 디렉토리에 생성 된 것입니다.

원인은 종속성이 있어야합니다. 나는 demo.cc에서 bin의 명시 적 종속성을 지정했다. 여전히 실패했습니다.

왜 그런가?

===== 자세한 내용 =====

모든 정리 빌드, 즉 SCons는 -c -j4이 작동 & & SCons는. 그러나 aftero 빌드는 demo.cc 파일을 사용해도 실패합니다.

답변

1

env.Command()의 결과 (= 타겟)는 "/tmp/dummy"입니다. SCons는 자동으로 의존성을 선택할 수 있도록하는 대신

gen = env.Command("demo.cc", "demo.json","demo.py $SOURCE > $TARGET") 

를 사용해보십시오. 명시 적으로 Depends()이 필요하지 않습니다.

+0

demo.cc는 demo.py의 출력이 아닙니다. demo.py는 내부적으로 많은 파일을 생성합니다. demo.cc는 그 중 하나입니다 .. – FaceBro

+1

그리고 SCons가 이것을 어떻게 알게 되겠습니까? 당신이 실제로 필요로하는 것은 에미 터이며, 명령에 의해 생성 된 모든 타겟 파일을 반환합니다. 우리의 [ToolsForFools 가이드] (https://bitbucket.org/scons/scons/wiki/ToolsForFools)에서 예제를 찾을 수 있습니다. – dirkbaechle

+0

은 나중에 확인합니다. 현재 사용중인 방법의 문제점은 무엇입니까? 나는 항상 사용하고 명시 적으로 의존성을 지정하는 데 의존하지만 여전히 작동하지 않습니까? – FaceBro