我有3个静态库graphics.lib,graphics_opengl.lib和graphics_d3d.lib
来自graphics.lib的:
class DeviceInfo
{
public:
std::string name;
};
class GenericGraphicDevice
{
public:
// example function populating info_out with generic device information.
virtual void GetDeviceinfo( DeviceInfo &info_out );
//...
};
来自graphics_opengl.lib的:
class OpenGLDeviceInfo : public DeviceInfo
{
public:
int gl_version;
};
class OpenGLGraphicDevice : public GenericGraphicDevice
{
public:
// example function populating info_out with gl specific device info and
// probably calling the base function it overrides to pick up the generic data.
virtual void GetDeviceInfo( DeviceInfo &info_out );
//...
};
与graphics_d3d.lib相同的设置。
所以我在Visual Studio解决方案中打开了4个项目。游戏为1,每个库为1。
选项1)我在通用图形项目中引用d3d和opengl项目,因此我的构建顺序为:
d3d OR opengl
Then graphics
选项2)d3d和opengl引用通用图形,所以我的构建顺序是:
graphics
d3d OR opengl
以我的方式思考d3d和opengl从图形继承对象,那么在尚未构建图形时如何正确编译/链接呢?
因此,我一直在使用选项2创建本地版本,但最近发现其他开发人员一直在使用选项1。
任何澄清我的思想在这里是对还是错的原因都将受到高度赞赏。
答案 0 :(得分:1)
如果它们都是静态库,则它们之间应该没有依赖关系。换句话说,他们都是独立的。通过这种方式,它们可以并行构建。
“游戏”项目应该依赖于所有三个静态库,因此它将在构建完所有库之后构建。