2010-06-15 3 views
4

현재 프로젝트를 재구성하고 있으며 최근에 간단한 응용 프로그램이 이제는 C++ 프로젝트 쌍인 정적 라이브러리실제 응용 프로그램이되었습니다.프리 컴파일 헤더 질문

두 프로젝트간에 하나의 미리 컴파일 된 헤더를 공유하고 싶지만 .pdb 파일 경로를 설정하는 데 문제가 있습니다.

내 첫 번째 프로젝트는 Library이라고 가정하고 .lib 파일과 해당 Library.pdb 파일을 빌드한다고 가정합니다. 이제 두 번째 프로젝트는 Application이며 모든 것을 동일한 폴더에 만듭니다 (.exeApplication.pdb 파일).

는 지금 내 두 프로젝트는 자신의 미리 컴파일 된 헤더 파일 하나 실제 헤더 파일을 기반으로 ( Library.pchApplication.pch)를 만들 수 있습니다. 작동하지만 시간 낭비라고 생각합니다. 두 프로젝트간에 하나의 미리 컴파일 된 헤더를 공유하는 방법이 있어야한다고 생각합니다. 내 Application 프로젝트에 나는 Use Precompiled Header (/Yu) 옵션을 설정하고 Library.pch로 설정하려고하면

, 그것은 다음 오류 때문에, 작동하지 않을 것입니다 :

error C2858: command-line option 'program database name "Application.pdb" inconsistent with precompiled header, which used "Library.pdb". 

그래서, 누군가가 어떤 트릭을 알고 있나요 또는 공유 방법 하나의 두 프로젝트 사이에 미리 컴파일 된 헤더가 올바른 디버그 정보를 보존합니까?

+1

투표 추가 : https://connect.microsoft.com/VisualStudio/feedback/details/98645/visual-c-build-c2859-on-rebuild-on-solution-with-shared-precompiled-headers?wa = wsignin1.0 –

+0

관련 항목 : http://stackoverflow.com/questions/645747/sharing-precompiled-headers-between-projects-in-visual-studio –

답변

2

질문은 왜 PCH (Precompiled Header) 파일을 공유하고 싶은가입니다. 일반적으로 나는 말하지 않는다. 그건 말이 안된다. PCH는 다른 프로젝트간에 정보를 공유하지 않도록 컴파일 속도를 높이는 데 사용됩니다.

PDB 파일에 대해서도 작성했기 때문에 응용 프로그램과 함께 라이브러리 코드를 디버깅하려고 할 수 있습니다. 라이브러리를 컴파일 할 때/Fd 매개 변수를 설정하면이 작업을 수행 할 수 있습니다. 응용 프로그램에서 라이브러리를 링크하고 링커가 해당 PDB 파일을 찾으면 완전한 디버그 지원을 얻습니다.

1

이 설정은 복잡하고 번거 롭습니다. 그 이상으로, 그것은 전혀 가능하지 않을 수도 있습니다.

대신, 한 응용 프로그램의 미리 컴파일 된 헤더를 두 번째 응용 프로그램에 포함시킬 수 있습니다. 두 번째 프로젝트에 대해서는 한 번 컴파일되지만 유지 관리가 쉽고 두 번째 프로젝트의 종속성을 재정의 할 필요가 없습니다 (포함하기 만하면됩니다).