私はVisual Studioで構築されたC++の(まだ)小型のゲームエンジンを持っています。ゲームエンジンはDirectXとOpenGLをサポートしていますが、これは重要ではありません。重要な部分は、抽象基底クラス(例えば、KernelクラスのサブクラスとしてDXKernelとOGLKernel)を実装していることです。したがって、DXKernelクラスとOGLKernelクラスには、プラットフォーム固有のコードと共通のインタフェースがあります。 Kernelクラスには独自の実装がいくつかあるため、純粋なインターフェイスではなく、これらのメソッドは実装によって継承される必要があります。複数の実装を静的ライブラリに展開する
私が理解しているように、メインプロジェクトから特定の実装を取り除き、コンパイルしようとしているプラットフォームに応じて、メインプロジェクトをリンクする静的ライブラリを作成することをお勧めします。だから、もし私がOS X用にコンパイルしているのであれば、OpenGLの実装だけを含めることができます。 Windows用にコンパイルしている場合は、DirectXとOpenGLの両方の実装を取り入れる必要があります。
Visual Studioのレイアウトは次のようになります。
Solution
Project
Header files
Core
DX
DXKernel.h <-- DirectX implementation of abstract methods
...
OGL
OGLKernel.h <-- OpenGL implementation of abstract methods
...
Kernel.h <-- abstract class(es)
...
...
Source files
Core
DX
DXKernel.cpp
...
OGL
OGLKernel.cpp
...
Kernel.cpp
...
...
私は、Visual Studioで新しい静的ライブラリプロジェクトを作成し、新しいライブラリに特定のファイルをコピーした場合、どのように私は、ライブラリプロジェクトを取得することができます一般的なヘッダ(例えばKernel.hなど)を見つけるには?メインプロジェクトのヘッダーファイルをライブラリにコピーする必要があります(ヘッダーが更新されると問題が発生します)。ライブラリプロジェクトのインクルードパスを変更する必要がありますか?
この設定では、メインプロジェクトとライブラリの間に何らかの循環依存関係が作成されているようですが、これは私が知る限りではありません。
私があなたを助けてくれることを願っています。
greate質問です。 – beratuslu