我可以创建一个链接另一个库但不依赖于它的包含的 C++ 库吗?

Can I create a c++ library that links another library but doesnt depend on its includes?

我想创建一个链接 SFML 库和其他库的 dynamic/static 库。我现在的问题是,在项目中取消我的库时,我必须确保 SFML includes 可用于该项目。
我能否以某种方式消除对第三方的这种依赖性 headers?
header-only 图书馆怎么样?

其他库如何处理这个问题(使用 SFML 时,我只需要它们的 headers,即使 SFML 依赖于其他库)

您将不得不重新组织您的头文件并重组您的代码。您将需要两组头文件:

  • 用于构建库的内部头文件,这些头文件包括并引用了 SFML 的头文件、类 和资源。

  • 构成库接口的 public 头文件。

您的图书馆仅安装 public 集。 public 头文件不包含 SFML 头文件,并且它们不引用任何 SFML 类.

您的 public 头文件和 类 通常会声明但不定义内部 类 和指向它们的指针。内部 类 仅在您自己的内部头文件中定义。

您应该花一些时间查看一些大型流行的 C++ 库中的头文件。您经常会发现未在 public 头文件中定义的指向内部 类 的指针和其他引用。它们是库内部 类 使用的,不会 public 公开。

甚至很多 C 库也是这样构造的。