2010-12-02 3 views
2

일반적인 용도로 외부 라이브러리를 만들고 있습니다. 내가 묻는 것은 부스트와 같은 .hpp 파일에 모든 클래스를 넣어야하는지 아니면 lib 파일로 컴파일하고 클래스 당 두 파일 룰을 유지해야 하는가하는 것입니다. 내가 볼 수있는 한 .hpp는 속도에 사용되므로 모든 클래스에 대해 .lib를 추가 할 필요가 없으며 전체 플랫폼과 크로스 플랫폼에 대해 대량 라이브러리를 추가 할 필요가 없습니다.헤더 전용 클래스 또는 lib 파일을 사용해야합니까?

[편집] 개인 취향과 그 이유. 내 도서관은 내 개인적인 용도로만 사용됩니다. 라이브러리를 정적으로 링크하기위한 것

+2

이것은 아마도 명명 될 수있는 것보다 더 많은 요소에 달려 있습니다. 의미가있는 무엇 이건을하십시오. 그들에게 근원을주고 싶니? 또는 바이너리와 연결되도록 하시겠습니까? 그것들은 2 가지 기본 옵션입니다. – Falmarri

+0

정적 연결 또는 동적 연결? – mkb

+0

@Matt Static Linking – Will03uk

답변

1

이것은 플랫폼 또는 템플릿 코드가 다른지 여부에 따라 다릅니다. 생성을 위해 많은 사전 처리가 필요한 경우 헤더 파일에서 다수를 선택하는 것에 대해 엄청난 선택의 여지가 없을 수 있습니다. 그렇지 않으면 가능한 한 많이 미리 컴파일해야합니다 (일반적으로).

3

다중 컴파일 단위 (cpp-files)에서 사용되는 클래스의 경우 빌드 시간을 줄이기 위해 가능한 작은 헤더 파일을 갖고 싶어합니다. 코드의 대부분은 cpp 파일에 저장되어야합니다.

+0

아니요, 정적 라이브러리의 경우 대량의 많은 소스 파일을 가져와야하므로 라이브러리와 연결하면 필요한 기능 만 연결됩니다. –

+0

그것은 특정 링커에 대해서만 사실입니다. 예를 들어, MS toolchain (2008)은/Gy를 사용하여 개체 파일을 컴파일하고 exe를/OPT : REF와 연결할 때 참조되지 않은 함수를 제거합니다. – jonaskje

관련 문제