我应该按什么顺序构建我的 C++ 静态库

What order should I build my C++ static libraries

我有 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 从图形中继承对象,那么当图形尚未构建时它们如何正确 compile/link?

因此我使用选项 2 创建本地构建已有一段时间了,但最近发现其他开发人员一直在使用选项 1。

任何澄清我的想法在这里是对还是错以及为什么,将不胜感激。

如果都是静态库,应该没有依赖关系。换句话说,他们都是独立的。这样,他们就可以并行构建。

"game" 项目应该依赖于所有三个静态库,因此它将在构建所有库后构建。