문제

SCONS는 파일 모드 시간 대신 MD5 해시를 사용하여 종속성을 구축 해야하는지 확인합니다.

나는 이것이 기본 동작이되기를 원합니다. 그러나 파일을 다르게 편집하는 것 외에도 특정 파일이 오래된 파일 ( "터치"와 동일)이라고 가정하도록 강요 할 수있는 방법이 있습니까?

편집하다: 유스 케이스 :

바이너리 파일 F는 도구 X를 사용하여 다른 파일 G를 만드는 데 사용됩니다. 어떤 이유로 든 파일 G가 변경되었거나 (손상되었거나, 편집 되었음) 도구 X가 변경되었으며 파일 g와 그 모든 것을 재현하고 싶습니다. .

편집하다: 이것은 때때로 사용하기위한 것입니다. 나는 이것이 항상 일어나기를 원하지 않습니다. 또한 특정 파일을 미리 알 수 없습니다. 이러한 이유로 SconScript/Sconstruct 파일을 수정하여 특정 파일을 빌드하지 않으려 고합니다. 내가 원하는 것은 명령 프롬프트 에서이 작업을 수행하는 것입니다.

scons {something to specify file foobar.h}

그리고 그것은 scons가 foobar.h에 따라 모든 파일을 빌드하도록 강요하는 반면 scons 종속성 검사를 위해 MD5 해시를 사용하여 일반 빌드를 수행합니다. Sconscript/Sconstruct 파일을 미리 편집 하여이 작업을 수행 할 수있는 방법이 있다면 빌드 시간을 크게 증가시키지 않습니다.

도움이 되었습니까?

해결책

Scons의 인터랙티브 옵션을 살펴 보았을 때 특정 대상을 청소하고 구축 할 수 있습니다.

이것을 설명하는 남자 페이지.

다른 팁

직접 할 수있는 방법이 없다고 생각합니다. 문제의 소스 파일에 다음과 같은 명백한 출력이있는 경우 test.o 만들어졌습니다 test.c, 그런 다음 제거합니다 test.o 소스 파일의 재 컴파일을 강제로합니다.

대신 만지고 싶다면 test.h 여기에는 여러 다른 소스 파일에서 포함되어 있으면 모든 것이 재건되도록 전체 프로젝트를 청소하는 것이 좋습니다.

말하면, 당신은 Decider() 기능 파일 종속성이 어떻게 처리되는지 선택할 수 있습니다. 프로젝트의 특정 파일에 대한 사용자 정의 결정자 기능을 선택할 수도 있으므로 할 수있는 전역 헤더 파일이있는 경우 touch 그리고 재건, 당신은 그렇게 할 수 있습니다.

업데이트 : 최신 질문에 답하기 위해 G. Scons 파일을 삭제하면 다음에 빌드 할 때 X를 실행하여 F에서 재현합니다.

나는 전체 날짜가 1 시간, 두 번째로 전체 날짜로 더미 대상 파일을 만듭니다. 그런 다음 다른 단계 가이 더미 대상 파일에 따라 다릅니다. 이렇게하면 빌드 단계가 다시 컴파일 될 때마다 MD5 값이 변경되어 후속 단계가 다시 컴파일됩니다. 또는 더미 대상을 제거 할 수 있으며 다시 컴파일을 캐스케이드 할 수 있습니다.

개인적으로, 나는 이것이 EDA 빌드 흐름의 모든 단계에서 모든 출력을 예측할 수 없기 때문에 매우 유용하다고 생각합니다. 또한 유지 보수 비용으로 인해 모든 빌드 단계의 모든 출력을 예측하려고 노력하지도 않습니다.

Greg가 언급했듯이 Decider () 기능이 더 스콘과 비슷하지만 개인적으로 타임 스탬프 파일을 좋아합니다.

Sconstruct 파일에서 파일을 나타내는 노드를 추출합니다. 이 후에는 사용할 수 있어야합니다 node.always_build (true) 그것이 건설되었는지 확인하기 위해, 이것이 부양 가족들도 재건 될 것이라고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top