2006-07-05

PCH(pre-compiled headers)를 이용해 빌드 시간을 최소화하기

무엇을 PCH에 포함시킬 것인가?

Noel Llopis의 The Care and Feeding of Pre-Compiled Headers에 의하면, 다음과 같은 파일들만이 stdafx.h 에 들어갈 수 있다고 한다.

  • 크기가 큰 시스템 헤더 파일 : windows.h, stdio.h, time.h, ...
  • 가장 많이 포함된 헤더 파일 : string, list, vector, map 같은 STL 헤더와 boost 헤더들
  • 자체 헤더 파일 : 그 어떤 자체 헤더 파일도 stdafx.h 에 들어가서는 안된다.

문제는 이런 헤더를 찾아내는 게 참 애매하다는 점인데, 이 스크립트를 사용하면 stdafx.h 에 들어가기에 적합한 헤더들을 찾아준다. 빌드 시간이 오래 걸려서 고생하시는 분들에게 추천한다. 단 주의할 점은

수동으로 PCH 추가하기

  • PCH 로 사용할 MyStdAfx.h 와 MyStdAfx.cpp 파일을 프로젝트에 추가한다.
  • 우선 프로젝트 설정(C/C++ - 미리 컴파일된 헤더)에서 PCH 사용하기를 선택하고 MyStdAfx.cpp 의 속성 메뉴에서 '''PCH 만들기'''로 지정한다.
  • 모든 .cpp 파일의 맨 위에 #include "MyStdAfx.h" 를 추가한다.

외부 파일 따로 지정

PCH를 사용하지 않는 외부 라이브러리의 .cpp를 현재 프로젝트에 추가해서 빌드해야 할 때가 있다. 이 경우 해당 파일의 속성 메뉴에서 "PCH 사용하기 - 사용하지 않음"을 선택하면 된다.

see also:


comments powered by Disqus