2010-01-22 3 views
1

Visual Studio 2008을 사용하고 있습니다.VC++ 프로젝트가 최신이 아닙니다.

두 개의 프로젝트가있는 솔루션이 있습니다. 하나는 내 "프로덕션 코드"인 DLL을 빌드합니다. 다른 하나는 내 단위 테스트 스위트 인 콘솔 앱 exe를 빌드합니다.

내 단위 테스트 프로젝트의 경우 DLL에서 소스 모듈의 이름을 링커 입력으로 나열했습니다. 즉, DLL 프로젝트에 DLLMain.cpp가 있고 DLL 프로젝트에 링커 입력 "DLLMain"이 있습니다. 이것은 EXE가 DLL 프로젝트에 의해 생성 된 obj 파일과 링크 할 수있게하여 단위 테스트만을위한 모듈의 재 컴파일을 방지합니다. (많은 빌드 시간을 절약 할 수 있습니다.)

문제는 exe가 obj보다 늦게 생성되고 다른 프로젝트에 의해 생성되므로 timestamp가 obj보다 항상 새로운 것입니다. 그래서 당신이 실행하거나 디버깅하려고하면, 그것은 항상 EXE 프로젝트가 오래되어 다시 빌드해야한다고 말합니다.

타임 스탬프를 무시하도록 exe 프로젝트를 구성 할 수있는 방법이 있습니까? 아니면 여기에 보이지 않는 다른, 아마도 좀 더 일반적인 해결책이 있습니까?

+1

"문제는 exe가 obj보다 늦게 생성되고 다른 프로젝트에 의해 생성되므로 해당 타임 스탬프는 항상 ob보다 새로운 j의 ... "- 결론은 바로 거기에 있다고 생각하지 않는다. objs 파일은 .exe가 제대로 빌드 된 경우 .exe/.dll보다 오래된 것입니다. exe보다 새로운 objs는 다시 연결해야 함을 나타냅니다. obj보다 새로운 소스 파일이 다시 컴파일 할 필요가 있음을 나타냅니다. – Ruddy

답변

0

DLL 프로젝트에서 foo.obj를 만들고 DLL 프로젝트에서 foo.obj를 연결하여 DLL을 생성 한 다음 foo.obj를 먼저 다시 컴파일하지 않고 EXE 프로젝트에 연결하는 것처럼 보입니다.

나는이 작업을 한 번도 해 본 적이 없지만, 가장 먼저 확인해야 할 것은 중간 디렉터리 설정이 EXE 프로젝트와 DLL 프로젝트에서 모두 동일한 지 확인하는 것입니다. 단위 테스트를 위해 필요하지 않은 프로젝트에

-1

이동
바로 눌러 속성
목록
확인을 클릭
선택 첫 번째 드롭 다운을 사용하여 새 구성을 추가 구성 관리자에
클릭 클릭 그 구성이 지금 집중되고있는 창에서
다음 구성 속성에서 "제외 빌드"에서 "예"로

+0

답변의 목적이 무엇인지 잘 모르겠습니다 ... 두 가지 빌드 타겟이 필요하지 않습니다. 내 프로덕션 DLL과 내 단위 테스트를 빌드하는 하나의 구성이 필요합니다. 나는 이것을 가지고 있지만 단위 테스트 프로젝트는 결코 최신이 아니다. – gg3

관련 문제