将多个实现提取到静态库中 我有一个(仍然)用VisualStudio构建的C++小游戏引擎。游戏引擎支持DirectX和OpenGL,但这并不重要。重要的是我有一些抽象基类的具体实现(例如,作为内核类的子类的DXKernel和OGLKernel)。因此,DXKernel和OGLKernel类与一些特定于平台的代码有一个公共接口。内核类本身确实有一些实现,因此它不是一个纯接口,这些方法应该由实现继承
现在,据我所知,最好将具体实现从主项目中移除,并创建静态库来链接主项目,具体取决于我编译的平台。因此,如果我是为OSX编译,我只想包括OpenGL实现。如果我是为Windows编译,我希望同时包含DirectX和OpenGL实现 Visual Studio布局现在如下所示:将多个实现提取到静态库中 我有一个(仍然)用VisualStudio构建的C++小游戏引擎。游戏引擎支持DirectX和OpenGL,但这并不重要。重要的是我有一些抽象基类的具体实现(例如,作为内核类的子类的DXKernel和OGLKernel)。因此,DXKernel和OGLKernel类与一些特定于平台的代码有一个公共接口。内核类本身确实有一些实现,因此它不是一个纯接口,这些方法应该由实现继承,c++,visual-studio-2010,static-libraries,C++,Visual Studio 2010,Static Libraries,现在,据我所知,最好将具体实现从主项目中移除,并创建静态库来链接主项目,具体取决于我编译的平台。因此,如果我是为OSX编译,我只想包括OpenGL实现。如果我是为Windows编译,我希望同时包含DirectX和OpenGL实现 Visual Studio布局现在如下所示: Solution Project Header files Core DX DXKernel.h
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
...
...
解决方案
项目
头文件
核心
DX
DXKernel.h让我回答我自己的问题。我对这个主题做了更多的研究,发现静态库要求使用的头在主项目中,而这些头的.cpp实现在静态库中
因此,项目的来源如下所示:
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
...
...
解决方案
主要项目
头文件
核心
DX
DXKernel.h