[visual studio] pch(precompiled header) 파일 이동 시 컴파일 에러 해결법 (c1083)
[visual studio] pch(precompiled header) 파일 이동 시 컴파일 에러 해결법 (c1083)
프로젝트 구조를 정리하기 위해 pch.h와 pch.cpp 파일을 Source 루트에서 Source/Core와 같은 하위 폴더로 이동시키는 경우가 있다. 이때 단순히 파일만 옮기고 빌드하면 C1083: 포함 파일을 열 수 없습니다 혹은 No such file or directory 에러가 무수히 발생한다.
이 글에서는 Visual Studio에서 미리 컴파일된 헤더(PCH)의 경로를 변경했을 때 반드시 체크해야 할 설정법을 정리한다.
1. 문제 상황 (Symptoms)
pch.h,pch.cpp파일을 특정 폴더(예:Core/)로 이동.- 프로젝트 속성에서 “미리 컴파일된 헤더” 사용 설정을 마침.
- 빌드 시 아래와 같은 에러 발생하며 실패.
fatal error C1083: 미리 컴파일된 헤더 파일을 열 수 없습니다. ‘…Debug\Project.pch’: No such file or directory
2. 원인 (Cause)
Visual Studio의 PCH 메커니즘은 생성(Create)과 사용(Use)으로 나뉜다.
- 나머지 모든 .cpp 파일: 만들어진
.pch파일을 가져다 사용(Use, /Yu)한다. - pch.cpp 파일: 컴파일 과정을 통해
.pch파일을 생성(Create, /Yc)해야 한다.
파일을 폴더 간에 이동시키면, pch.cpp에 개별적으로 설정되어 있던 “생성(/Yc)” 옵션이 풀리고, 프로젝트 기본값인 “사용(/Yu)”으로 덮어써지는 경우가 발생한다. 결과적으로 .pch 파일을 만드는 녀석이 없어지니, 다른 파일들이 참조할 파일이 없어 에러가 나는 것이다.
본인은 프로젝트 설정에서 사용(/Yu)를 기본으로 설정해놨었다.
3. 해결 방법 (Solution)
pch.cpp 파일에 대해 명시적으로 “만들기” 설정을 다시 부여해야 한다.
Step 1. pch.cpp 속성 변경
- 솔루션 탐색기(Solution Explorer)에서
pch.cpp파일을 우클릭 > 속성(Properties) 선택. - C/C++ > 미리 컴파일된 헤더(Precompiled Headers) 탭으로 이동.
- 미리 컴파일된 헤더(Precompiled Header) 항목을
만들기 (/Yc)로 변경.- (주의: 프로젝트 전체 속성이 아니라, 반드시 pch.cpp 파일 하나만의 속성을 변경해야 함)
- 적용(Apply) 및 확인.
Step 2. 경로 재설정 (필요시)
만약 헤더 파일(pch.h)을 찾지 못한다는 에러가 뜬다면, 컴파일러가 해당 파일의 위치를 알 수 있도록 포함 디렉터리를 추가해야 한다.
- 프로젝트 전체 속성 > C/C++ > 일반(General) 이동.
- 추가 포함 디렉터리(Additional Include Directories)에
pch.h가 있는 폴더 경로 추가.- 예:
$(ProjectDir)Source\Core - 이렇게 하면 소스 코드에서
#include "Core/pch.h"대신 기존처럼#include "pch.h"를 유지할 수 있다.
- 예:
요약
PCH 관련 에러가 났을 때는 당황하지 말고 딱 두 가지만 확인하자.
- pch.cpp는 만들기(/Yc)인가?
- 나머지 파일들은 사용(/Yu)인가?
This post is licensed under CC BY 4.0 by the author.