2016-12-02 3 views
-1

이 예제에서 foo.c에는 foo.h가 포함됩니다. foo.h가 변경되면 foo.c가 foo.o로 다시 빌드되지만 libfoobar.a는 다시 빌드되지 않습니다.헤더 변경 후 SCons StaticLibrary가 다시 작성되지 않음

Import('env') 

penv = env.Clone() 
penv.Append(CPPPATH=['./']) 

penv.StaticLibrary('foobar',[ 
     'foo.c', 
     'bar.c', 
    ], 
) 

힌트 :

+1

재건되지 않았다는 것을 어떻게 알 수 있습니까? 헤더 파일의 변경 내용은 무엇입니까? 재 구축 된 오브젝트 파일이 변경되지 않으면 (md5) 아카이브를 재구성 할 필요가 없습니다. –

+0

아 맞다! 당신 말이 맞아요! 종속성이 합계와 함께 작동하는 것을 알지 못했습니다! 고마워, 고마워! 적절한 답변을 찾으면 언제든지 알려주세요. –

+0

다운 유권자는 그의 생각을 공유하는 것이 어떻습니까? –

답변

1

SCons에서 결정자은 대상을 다시 작성해야하는지 결정합니다. 기본 결정자는 MD5입니다. 즉, 개체 파일이 다시 작성된 경우에도 해당 MD5가 변경되지 않으면 해당 개체에 대한/링크가없는 파일은 다시 작성해야합니다. 이는 파일 시스템 타임 스탬프를 사용하여 대상을 다시 빌드할지 여부를 결정하는 Make와는 대조적입니다.

따라서 헤더 파일 변경이 공백이거나 중요하지 않은 경우 종속성 트리의 개체 파일보다 위에있는 파일을 다시 빌드해야합니다.

관련 문제