2014-10-22 2 views
0

컴파일 시간을 단축하기 위해 미리 컴파일 된 헤더를 사용하여 조사하고 있습니다. https://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html, 나는 다음과 같은 읽기 : gcc의 미리 컴파일 된 헤더 사용

하나의 미리 컴파일 된 헤더

특정 편집에 사용할 수 있습니다

나는 여기에 주제에 documentaiton을 읽었습니다.

빌드 시간을 개선하고 싶은 프로젝트에는 종종 매우 긴 목록이 포함됩니다. 위와 같이 생각하면 가장 많은 성능 향상을 얻으려면 공통 include 모음을 만들어 단일 헤더 파일에 저장하고 헤더 파일을 컴파일 및 포함해야합니다.

다른 한편으로 필자는 특정 파일에 대한 의존성을 명시 적으로 나열하기 때문에 먼저 미리 컴파일 된 헤더와 실제 헤더 파일의 수동 목록을 포함하는 경향이 있습니다.

나는이에 관한 두 가지 질문이 있습니다

  1. 내 분석과 접근 방식 맞습니까? 이 성명서를 올바르게 해석 했습니까?

  2. 이렇게하면 필자는 필자가 필요로하지 않는 파일을 포함하여 여러 위치에서이 파일 (stdafx.h)을 사용하게됩니다. 그러나 명시 적으로 코드 의존성을 나열하고 싶습니다.

    #ifdef USE_PRECOMPILED_HEADERS 
    #include "stdafx.h" 
    #else 
    #include "dep1.h" 
    #include "dep2.h" 
    #endif 
    

    나는 주기적으로 내 모든 dependencis가 나열되어 있는지 확인하는 미리 컴파일 된 헤더없이 빌드를 실행할 수 있습니다 : 나는 다음과 같은 일을 할 수 . 그러나 이것은 다소 clunky하다. 누구든지 더 나은 해결책이 있습니까?

조사 결과 더 좋은 결과를 얻는 데 도움이되는 정보가 있으면 누구나 기쁜 마음으로들을 수 있습니다.

+0

가능한 중복 [GCC 및 프리 컴파일 헤더] (http://stackoverflow.com/questions/12437955/gcc-and-precompiled-headers); [이 대답을 참조하십시오 (http://stackoverflow.com/a/12438040/841108) 여전히 GCC 관련 4.9 –

답변

0

위는 나는 일반적인 의 수집, 컴파일, 하나의 헤더 파일에 넣어 포함 할 것이다 및 는 헤더 파일 것을 포함하는, 즉 가장 성능 개선을 얻을 생각하는 날 리드.

예,이 관찰은 정확합니다. 하나의 단일 헤더 파일에 대부분 (모든?) 포함을 넣은 다음 미리 컴파일됩니다.

어느 차례로 의미 ... 그

  • 없이 컴파일 미리 컴파일 된나이를 취할 것 인 해당 헤더의 도움;
  • 이름 지정 규칙이나 다른 방법 (문서)을 사용하여 개별 번역 단위에서 참조 된 항목과 그 선언 사이의 정보 링크를 만듭니다.

나는 그 이유로 미리 컴파일 된 헤더처럼 많이하지 않습니다 ...

1
  1. 예, 귀하의 관찰은 절대적으로 좋습니다! 너 "would have to make a collection of common includes, put them into a single Header file, compile and include that Header file". 이 공통 헤더 파일의 이름은 일반적으로 stdafx.h입니다 (원하는 이름을 지정할 수 있지만).

  2. 나는이 질문에 대해 정말로 이해하지 못한다.

편집 :

당신은 또한 표준 헤더 (같은 iostream, map는, vector가 등) 코드 문서의 종속성을 포함 할 하시겠습니까?

일반적으로 이어야합니다. 따라서 제어 파일이 아닌 stdafx.h에 헤더 파일 만 포함해야합니다. [1] 표준 언어는 [2] 종속 모듈의 포함 파일 (주로 노출 된 인터페이스 헤더)을 포함합니다. 나머지 모든 include (현재 프로젝트/모듈에있는 소스 포함)는 미리 컴파일 된 stdafx.h에 넣지 않고 명시 적으로 각 헤더 파일에 포함시켜야합니다.

+1

정보 주셔서 감사합니다. 나는 두 번째 질문을 분명히하기를 희망하는 편집을했다. – Spacemoose