2016-10-03 3 views
1

첫째,이 같은 SConstruct 파일을 가지고 :SConstruct 파일을 변경할 때 scons가 다시 빌드를 트리거하지 않습니까?

내가 SCons는 실행
Object('a.s') 
Program('mya','a.o') 

, 그것은 'MYA'를 생성한다. 승인. 그런 다음 내 구조를 다음과 같이 변경합니다.

Object('a.s',CCFLAGS='-DHello') 
Program('mya','a.o') 

다시 실행하십시오. 아무 것도 수행되지 않습니다.

scons: Reading SConscript files ... 
scons: done reading SConscript files. 
scons: Building targets ... 
scons: `.' is up to date. 
scons: done building targets. 

이것은 매우 이상합니다. make 또는 msbuild 시스템을 사용할 때마다 프로젝트 구성 파일에서 argumenet 변경이있을 때마다 다시 빌드가 수행됩니다. 이것이 기본 규칙입니다.

그러나 scons의 규칙이 다르게 보인다고 디자인에 의한 것입니까? 소스 파일을 변경하면 다시 빌드가 트리거됩니까? 이것이 디자인이라면 컴파일/링커 옵션이 변경 될 때 대상 파일이 달라야하므로 재 구축을 트리거해야한다는 결함이 있다고 생각합니다.

내 이해가 잘못되었거나 여전히 알아야 할 몇 가지 특별한 사실이 있습니까? 고마워요.

+0

옆 : 내가 본 적이없는 'make'는이 기능이 없습니다. 사실이 기능은 SCons의 장점 중 하나입니다. –

답변

3

지난 단락을 직접 참조하고 마지막 세 질문 (Using 'LIBS' in scons 'Program' command failed to find static library, why?When changing the comment of a .c file, scons still re-compile it? 및이 중 하나)과 깊이에 따라 예를 들어 SCons에 대해 잘 모르는 많은 것들이있는 것 같습니다.

MAN pageUserGuide을 읽으려면 다음 단계를 따르세요. 당신은 또한 당신의 숙제를하는 "결점"이있는 것으로 보이거나 디자인에 의문을 제기하는 대신에 조금 어둡게 할 수 있습니다. (How To Ask Questions The Smart Way도 참조하십시오).

당신이 호출된다 " scons -c"다음에 " scons"당신이 " -DHello"가 " a.o는"재건 도착하더라도, 명령 줄에 나타나지 않는 것을 볼 수 있습니다. 변수 $CCFLAGS은 어셈블러 파일을 컴파일하는 데 사용되지 않지만 $ASFLAGS은 ...입니다. 대신 소스 파일을 편집하지 않고 즉시 다시 빌드해야합니다.

+1

첫 번째 두 단락은 해설이며 올바르지 않은 답변입니다. 예, 유효한 의견이지만 의견은 맞습니다. 당신의 대답과 코멘트에서 그들을 옮겨 놓는 것을 고려해보십시오. –

관련 문제