2013-10-29 1 views
1

precompiled headers을 사용하여 "컴파일 속도 향상"을 시도하고 있습니다. Xcode에는 YourProject_Prefix.pch이라는 파일이 있습니다. 거기에 원하는 개수의 헤더 파일을 포함 할 수 있습니다.PCH 파일 선택

내 질문은 어떻게 헤더 파일을 PCH에 넣어야합니까? 모든 헤더 파일을 거기에 버려야합니까, 아니면 실제로 최적이 아닐까요?

+0

Xcode 5를 사용하는 경우 - 시스템 프레임 워크에서 지원되는 모듈을 살펴보십시오. 그런 다음'@import UIKit;'과 같은 것을 할 수 있으며 실제 텍스트 가져 오기 대신 미리 컴파일 된 데이터베이스를 사용합니다. 프리 컴파일과 마찬가지로 빠른 개별 파일에서이 작업을 수행 할 수 있으며 가져 오기를 전역 적으로 추가하지 않습니다. pch 파일에 대해서는 변경 될 가능성이없는 헤더를 추가하십시오. 그들이 변경하면 pch는 다시 사전 컴파일되고 당신은 그것의 혜택을 잃게됩니다. – Abizern

답변

1

다음과 같이 머리글 파일을 가져 오면됩니다.

#ifdef __OBJC__ 
    #import <UIKit/UIKit.h> 
    #import <Foundation/Foundation.h> 
    #import "YourHeaderFile.h" 
#endif 

특히 응용 프로그램을 빌드하는 동안 미리 컴파일 된 헤더가 매우 유용 할 수 있습니다. .pch 파일의 머리글은 처음 컴파일 될 때만 이후 헤더가 미래에 변경되는 경우에만 컴파일됩니다. 앱에서 변경되지 않는 많은 프레임 워크/헤더를 가져 오는 경우. 이는 컴파일 할 때마다 컴파일러가 .pch를 사용하여 모든 가져온 프레임 워크/클래스를 컴파일하기 때문에 컴파일 (빌드)을 가속화 할 수 있습니다.

+0

예, 어떤 파일을 잘라야합니까? 모두들? – bobobobo

+0

내 답변을 편집했습니다. 더 도움이 되었기를 바랍니다. –

+0

글쎄요, 그럴 것 같습니다. pch에 더 많이 포함할수록 더 빠른 초기 컴파일이되지만 특정 시점에 최종 빌드 시간이 훨씬 오래 걸립니다. 더 많은 RAM이 필요한지 모르겠지만, PCH에 너무 많은 파일을 포함 시키면 전체적으로 (약 10 초 정도) 컴파일 프로세스가 느려집니다. – bobobobo

1

pch 파일은 기본적으로 모든 소스 파일에 포함됩니다.

즉 실제로는 헤더 파일을 어느 정도 전역 적이거나 결코 변경하지 말아야한다는 의미입니다. 모든 헤더를 넣으면 컴파일 속도가 느려질 것입니다. 왜냐하면 변경 될 때마다 프로젝트의 다른 모든 파일이 다시 컴파일해야하기 때문입니다. 에누리 ++ C에 대한 링크 된 의견을 가지고, 또한

#ifdef __OBJC__ 
    #import <Cocoa/Cocoa.h> 
    #import "Errors.h" 
    #import "Localization.h" 
    #import "Logging.h" 
#endif 

:

여기 내 프로젝트 중 하나의 샘플이다 (나는이 또는 연구를 테스트하지 않았다). C++은 템플릿 등을 사용하여 헤더 파일에 들어가서 목표가 C보다 훨씬 오래 걸릴 수 있습니다. objective-c에서는 헤더에 구현되지 않고 유형 및 인터페이스 만 가질 가능성이 높습니다.