Visual Studio 2015에 상당히 큰 다중 프로젝트 C++ 솔루션이 있습니다. 일부 프로젝트는 다른 프로젝트에서 사용되는 정적 라이브러리로 컴파일됩니다. 컴파일 속도를 높이기 위해 미리 컴파일 된 헤더를 사용합니다. 각 프로젝트에는 여러 빌드 구성이 있습니다. 디버그, 릴리스 및 테스트를 실행하기위한 실행 파일을 항상 빌드하는 몇 가지 테스트 구성 (일반 구성이 정적 라이브러리를 빌드하더라도).MSVC C2859 다른 프로젝트의 다른 빌드 구성을 라이브러리로 사용하는 경우
디버그 및 릴리스 구성을 빌드 할 때 또는 전체 다시 빌드를 수행 할 때 모든 것이 잘 작동하지만 다른 프로젝트의 정적 라이브러리를 사용하는 프로젝트의 테스트 구성을 증분 빌드 할 때 빌드를 유발하는 C2859 오류가 발생합니다 실패.
예를 들어, peach
은 정적 라이브러리를 만들고, cobbler
은 peach
에 의존합니다. cobbler
의 미리 컴파일 된 헤더는 시스템 및 외부 라이브러리 만 참조합니다 (솔루션 내부의 헤더 없음). cobbler
의 test
구성 참조 peach.lib
peach.lib
는 peach
의 release
구성에 의해 만들어진, 그래서 나는되도록 지정 cobbler-test
라는 솔루션 구성이되어
peach
는cobbler
가test
프로젝트 구성을 사용하여 자사의release
프로젝트 구성을 사용합니다.
cobbler-test
처음부터 (또는 다시 작성하면 & 빌드 등) 제대로 작동합니다. 그때 cobbler
에 crust.cpp
라는 소스 파일을 수정하고 빌드하려고한다면, 나는이 오류 얻을하십시오로 구축 된 동일한 솔루션에서 정적 라이브러리를 참조 할 때 다시
c:\...\cobbler\src\crust.cpp(1): error C2859: C:\...\out\cobbler-test.pdb is not the pdb file that was used when this precompiled header was created, recreate the precompiled header.
를에만 발생 현재 프로젝트 구성 이름과 다른 프로젝트 구성 이름. 두 프로젝트 모두 release
또는 debug
을 사용하면 증분 빌드가 정상적으로 작동합니다.
처음부터 전체 컴파일을 수행하면 처음에 미리 컴파일 된 헤더를 사용하지 않아도됩니다. 프로젝트의 모든 조합에 대해 추가 프로젝트 구성을 만들지 않고도 증분 테스트 구성을 사용할 수 있습니까?