Visual C++ 다시빌드 또는 빌드정리시 참조 라이브러리 파일이 삭제되는 현상

Visual C++ 솔루션이 다음과 같이 구성될때

TestA.vcxporj (빌드 출력 libTestA.lib)
TestB.vcxproj (libTestA.lib 를 사용, 빌드 출력 TestB.exe)

TestB 다시 빌드(또는 정리) 하면 원래는 libTestA.lib 은 삭제하지 말고 TestB.exe 와 관련된 중간 파일들만 삭제되어야 한다.
하지만 libTestA.lib 파일을 삭제하고 libTestA.lib 를 찾을 수 없다는 에러가 발생하는 경우가 있다.

이와 같은 현상이 발생하는 이유는 TestA 와 TestB 같은 중간 출력 디렉토리를 사용하고 있어서다.

VS2012 기준
속성 페이지 -> 구성속성 -> 일반 -> 중간 디렉토리 -> $(ProjectName)\$(Platform)\$(Configuration)\

로 각각의 독립된 프로젝트 디렉토리를 설정하면 해결된다.

[참고]
VS 가 프로젝트 빌드 정리시 중간 디렉토리의 *.tlog(TrackFileLog)를 참고해서 파일들을 삭제하는데, 다음과 같이 .vcxproj 에 설정하면 빌드시 .tlog 파일을 생성하지 않게 할 수 있다.
<PropertyGroup>
<TrackFileAccess>false</TrackFileAccess>
</PropertyGroup>
이 방법은 어쩔 수 없이 두 프로젝트의 중간 디렉토리를 같게 하였을 경우만 사용하도록 하자.

comments:

댓글 쓰기