문제

때로는 컴퓨터 시계를 앞으로 이동시키는 코드 작업을 해야 할 때도 있습니다.이 경우 일부 .cpp 또는 .h 파일의 최신 수정 날짜가 미래 시간으로 설정됩니다.

나중에 시계가 수정되고 소스를 컴파일하면 최신 수정 날짜 중 일부가 미래이기 때문에 시스템이 대부분의 프로젝트를 다시 빌드합니다.후속 재컴파일마다 동일한 문제가 발생합니다.

내가 아는 해결책은 다음과 같습니다.

a) 미래 시간이 있는 파일을 찾아서 다시 저장하세요.이 방법은 프로젝트 규모가 매우 크고 Windows 고급 검색에서도 변경된 파일을 찾는 데 시간이 걸리기 때문에 이상적이지 않습니다.

b) 전체 프로젝트를 삭제하고 svn에서 다시 체크아웃합니다.

이 문제를 어떻게 해결할 수 있는지 아는 사람이 있나요?

소스 파일 변경 사항을 감지하기 위해 마지막 수정 날짜 대신 보관 비트를 사용하도록 컴파일러에 지시할 수 있는 설정이 Visual Studio에 있습니까?

아니면 이 상황에서 사용할 수 있는 재귀적 수정 날짜 재설정 도구가 있을까요?

도움이 되었습니까?

해결책

이것이 내 문제라면 시스템 시간 문제를 피하는 방법을 찾을 것입니다.단위 테스트나 가상 머신 등에서 코드를 격리합니다.

그래도 사랑하니까 파워셸:

Get-ChildItem -r . | 
    ? { $_.LastWriteTime -gt ([DateTime]::Now) } | 
    Set-ItemProperty -Name "LastWriteTime" -Value ([DateTime]::Now)

다른 팁

나는 마음껏 시계를 조작할 수 있고 개발 머신에 영향을 미치지 않는 가상 머신을 사용하는 것을 권장합니다.무료 2개는 가상 PC 마이크로소프트와 버추얼박스 태양에서.

이것이 귀하의 상황에서 작동하는지 모르겠지만 시계를 앞으로 이동하지 않고 gettime 메서드(또는 사용 중인 모든 항목)를 래핑하여 필요한 미래 시간을 반환하도록 만드는 것은 어떻습니까?

설치하다 유닉스 유틸리티

touch temp
find . -newer temp -exec touch {} ;
rm temp

find를 호출할 때 전체 경로를 사용해야 합니다. 그렇지 않으면 아마도 Windows의 find.exe를 대신 사용할 것입니다.이는 Windows 셸에서 테스트되지 않았습니다. 구문을 약간 수정해야 할 수도 있습니다.

나는 창을 사용하지 않습니다. 그러나 "미래" 타임스탬프가 있는 파일을 찾는 데 사용할 수 있는 awk 또는 grep과 같은 것이 분명히 있습니다. 그런 다음 해당 파일을 "터치"하여 적절한 시간을 갖도록 합니다. 심지어 Perl 스크립트도 마찬가지입니다.

1) 수정 사항을 감지하기 위해 타임스탬프를 사용하지 않는 빌드 시스템을 사용합니다. 스콘

2) 사용 캐시 타임스탬프를 사용하는 빌드 시스템의 속도를 높이고 모두 다시 빌드합니다.

두 경우 모두 md5sum을 사용하여 타임스탬프가 아닌 파일이 수정되었는지 확인합니다.

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