2013-08-15 1 views
0

내가 제어 할 수없는 빌드 스크립트가있어 (파일을 많이 생성하는 셸 명령) 빌드 할 수 있지만 대부분의 경우 실행하는 대신 파일을 몇 개 만들면 충분합니다. 전체 스크립트.SCons : 타겟을 빌드 된 것으로 표기

내 SConstruct 파일은 다음과 같다 :

cmd1 = env.Command(<main executable file path>, [], <build everything shell command>) 

cmd2 = env.Command(<target file path 1>, <source file path 1>, <build file 1>) 
cmd3 = env.Command(<target file path 2>, <source file path 2>, <build file 2>) 

내가 원하는이 CMD2 및 CMD1 대상이 만들어진 경우 실제로 구축하지 않고, 가능 구축 등 CMD2 명령 목표를 표시하는 것입니다?

답변

0

command1이 대상 1과 대상 2를 빌드한다는 것을 의미합니까?

정말 그렇다면 다시 돌아 왔습니다.

빌드 시스템의 아이디어는 아래에서부터 빌드됩니다. 필요한 각각의 조각을 만들고 나서 모든 조각을 모아 더 큰 조각을 얻습니다.

큰 스크립트가 빌드하는 일부를 빌드하기 위해 모든 것을 빌드하고 작은 스크립트를 많이 작성하는 하나의 거대한 스크립트로 구성되지 않습니다.

cmd2 = env.Command(<target file path 1>, <source file path 1>, <build command 1>) 
cmd3 = env.Command(<target file path 2>, <source file path 2>, <build command 2>) 
cmd1 = env.Command(<main executable file path>, [cmd2, cmd3], <link everything command>) 
+0

예, 지령 1이이 target1과 TARGET2를 구축 :

당신은 같은 몇 가지 구조를 고려하여야한다. 내 경우가 재래식이 아니라는 것을 이해합니다. 여기에 몇 가지 배경이 있는데, py2app로 독립 실행 형 Mac 응용 프로그램으로 패키지 한 Python 프로그램이 있습니다. 나는 개발 중에 항상 그것을 실행하고 싶지 않다. (거기에는 리사 모드가 있지만, 여전히 느리다.) SCons를 사용하여 py2app를 다시 쓰고 싶지는 않습니다. 처음부터 빌드하면 py2app를 실행하는 것이 더 쉽습니다. py2app를 실행하지 않고 변경된 파일 만 복사/빌드합니다. – Dan

+0

그래서 필요한 경우 다른 대상과 일부 원본을 공유하는 별도의 대상으로 만듭니다. –

+0

py2app를 실행 (그리고 모든 것을 빌드)하면, 다른 타겟 (그 개별 파일을 복사/빌드)이 여전히 실행되며,이 경우에는 실행하지 않기를 바란다고 올바르게 이해한다면 문제는 해결되지 않을 것입니다. – Dan

관련 문제