Visual Studio 에서 C++ 프로그램 작성시 자동 생성을 하면 딸려오는 소스중에 stdafx..h cpp 가 있습니다.

stdafx 는 찾아보니 Standard Application Freamworks 약자로 MS에서 제공하는 자잘한 라이브러리 체계라고 하는군요.

 

그럼 이게 왜 중요하냐면, 매회 부분 수정으로 전체 소스를 컴파일 하는것은 엄청난 시간 낭비 입니다.

곰곰히 생각해 보면, 반에서 한명이 전학 갔다고 전교생 목록 리스트를 재 작성하는것은 바보 같은 짓이죠.

 

그래서 VC는 미리 작성한 컴파일 오브젝트를  pch (PreCompiled Header)로 저장하고 이를 활용합니다.

 

그런데, 보통 작업중 소스 파일을 부분적으로 폴더에 나눠 넣기도 하는데,

이러면 stdafx.h 파일에 대해 아래와 같은 에러 메시지가 나옵니다.

 

"Did you forget to add '#include "stdafx.h"' to your source?"

 

곤란 하게 되었습니다.

Util/Clock.h 파일을 만들었는데 stdafx 는 상위 폴더에 있으니

#include "../stdafx.h" 로 하지 않으면 컴파일이 안됩니다.

 

 

 

그러면 미리 컴파일된 헤더를 끄면 어떻까요?

 

 

 

 

 하지만 폴더를 나눌정도로 소스 파일이 방대해진다면, 미리 컴파일된 헤더를 안쓴다고 할때,

처음 말씀드린것 처럼, 전학생 1명이 왔다고 전교생 학생부를 고쳐야 하는 (부분 수정으로 전체 컴파일 하는) 바보 같은 짓을

컴퓨터가 하겠죠..

ssd니 옥타 코어니 해도 시간이 걸리기 마련입니다.

 

그러면 어떻게 하면 좋을까요?

 

우선 컴파일러가 하라는데로 해줍니다. 아래와 같이요.

 

 

그리고 VC++ 디렉터리 중 포함 디렉터리에 $(SolutionDir) 또는 $(ProjectDir)를 추가해 줍시다.

 

 

 

 

 

이렇게 하면, 컴파일 에러도 없고, 미리 컴파일된 헤더를 사용하면서

폴더별로 소스를 나눠 관리 할 수 있습니다.

 

 

 

+ Recent posts