2010-12-02 6 views
2

私は一般的な使用のための外部ライブラリを作成しています。私が尋ねるのは、すべてのクラスをブーストのような.hppファイルに入れるか、それをlibファイルにコンパイルしてクラスごとの2つのファイルルールを保持すべきかどうかです。限り、私は見ることができます.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

関連する問題