나는 프리 컴파일 된 헤더에 관한 기본 사항을 이해하고 있으며, 미리 컴파일 된 헤더를 라이브러리 내부에서 사용할 수없는 이유를 생각할 수는 없다고 생각하지만, 가능하지 않거나 없어야한다고 들었습니다. 완료 (어느 것을 기억할 수 없는지).미리 컴파일 된 헤더를 정적으로 링크 될 라이브러리의 일부로 사용할 수 있습니까?
공유 라이브러리가 여러 다른 사람들에 의해 정적으로 링크되는 프로젝트가 있고 공유 라이브러리 내에서 내 외부 STL/부스트 종속성에 대한 미리 컴파일 된 헤더를 사용하고 싶지만 가능한 경우 확실하지 않습니다. OS X 및 Windows 시스템을 대상으로하고 있습니다. 일반적인 검색은 stdafx.h
과 관련된 Windows 솔루션을 더 많이 가리키는 것처럼 보입니다. 미리 컴파일 된 헤더를 사용하는 것이 일반적으로 Windows 관행이라고 생각하게 만듭니다.
는/내가 다른 프로젝트에 정적으로 연결 수 있습니다 라이브러리의 내부에 미리 컴파일 된 헤더를 사용한다 수 :
내 질문은 단순히 이것이다? 그렇지 않다면, 내 STL/Boost 의존성을 추구하는 모든 것을 위해 편의 헤더를 사용하고 있는가? 나는이 같은 것을 말하는 겁니다 :
// common.h
#pragma once
#include <boost/this>
#include <boost/that>
#include <string>
#include <vector>
#include <other_stl_header>
// Foo.h
#include "common.h"
class Foo { ... }
// Foo.cpp
#include "Foo.h"
...
편집 : 내가 지정해야, 내가 미리 컴파일 된 헤더 내가 컴파일하고있어 도서관 이외의과 공유 될 것이라는 기대가 없다. 내 질문은 라이브러리의 컴파일에 사용되는 미리 컴파일 된 헤더를 만들 수 있는지 여부와 관련이 있습니다.
미리 컴파일 된 헤더는 링크하기 전의 것입니다. 기본적으로 부분 오브젝트 파일로,이를 포함하는 모든 번역 단위의 템플리트 역할을합니다. 컴파일러 세부 사항이기 때문에 이들을 공유하는 것은 의미가 없습니다. – sehe