非常に特定のタスクを処理するように設計された一連の小さなライブラリ「モジュール」があります。単一のモジュールは、通常、.h
とだけで構成され.cpp
、場合によっては、ユーザーが役立つと思われる関連する非フレンド、非メンバー関数を提供する別のセットで構成されます。
たとえば、 を定義 Foo.h
する というクラスを宣言し、によって定義されるを使用する関数を宣言する場合があります。Foo
Foo.cpp
FooUtilities.h
Foo
FooUtilities.cpp
通常、これらのモジュールを自分のプログラムで使用するには、.h
と.cpp
をプロジェクトに追加し#include
、.h
必要なファイルに を追加します。ただし、相互依存する可能性のあるモジュールを使用する大規模なプログラムの場合、これは大きな不便になります。.h
したがって、すべてを単一のモノリシックな静的ライブラリまたは動的ライブラリとしてコンパイルして、ライブラリ ファイルをプロジェクトに追加し、ヘッダー検索ディレクトリを前述のファイルを含むフォルダーに設定してコンパイルできるようにしたいと考えています。
かなり単純に見えますよね?私がしなければならないのは、ビルド ターゲットとして静的/動的ライブラリを使用して新しいプロジェクトを開始し、適切なファイルをすべて追加することだけです。とにかくファイルがコンパイルされ、最終製品に追加さ.cpp
れ#include
ます。.h
ただし、一部のモジュールはテンプレートを使用するため、.tpp
代わりに.cpp
. ファイルは.tpp
編成のみを目的としており#include
、通常のモジュールの処理方法とは逆の、それぞれのヘッダー ファイルによって定義されます。このため、それらをライブラリ プロジェクトに追加するだけでは何もコンパイルされません。
どうすればこれを回避できますか? CompileThis.cpp
テンプレートを使用するすべてのモジュールを含むファイルが必要ですか? もしそうなら、このファイルにはテンプレート以外のモジュールも含めるべきですか? これは急速に組織の混乱に発展する可能性があるようです。