【问题标题】:Boost usage in a static library causes app to include boost静态库中的 Boost 使用会导致应用包含 boost
【发布时间】:2016-06-05 13:08:33
【问题描述】:

我正在使用静态链接为 qt 应用程序构建我的库。我在我的一个 C++ 内部库中使用 boost。我正在为我的内部库使用 .pro 文件,其中我定义了 boost 库位置和 boost 头文件位置,因为我的库依赖于 boost。到目前为止,所有这些都构建得很好。

我的 qt 应用程序正在链接到我的内部静态库,而后者又使用了 boost。问题是,当我尝试从使用 boost 的内部库中包含一个标头时,除非“我在我的应用程序的 .pro 文件中包含 boost”,否则它无法构建。在应用程序的 pro 文件中包含 boost 依赖项可以使构建工作正常,但我不想这样做,因为应用程序应该担心库的依赖项,无论是 boost 还是其他。 有什么方法可以避免我的应用在不直接使用时担心提升?

我阅读了以下链接,它看起来像一个类似的问题,但答案对我不起作用 How to link Boost in a dependant static library

感谢您分享的任何专业知识。提前致谢。

【问题讨论】:

  • 您的应用程序使用了 boost。你很惊讶你需要链接提升。为什么?
  • 没有。 MyStaticLibrary1 使用 boost & app 使用 MyStaticLibrary1。这会导致应用程序包含 boost,即使它没有直接使用它。情况就是这样。我正在尝试避免应用程序对 boost 的依赖。
  • 如果你的应用使用了一个使用 boost 的库,那么你的应用就使用了 boost。就这么简单。

标签: c++ qt boost static-libraries qmake


【解决方案1】:

静态库实际上只不过是目标文件的集合(存档),当您与静态库链接时,它就像与单独的目标文件链接。

这就是为什么如果您在静态库中使用外部第三方库,则需要在需要自己的静态库时与该外部第三方库链接。

【讨论】:

  • 啊。我很害怕。感谢您的澄清。是否可以通过不在库的导出标头中包含 boost 来避免这种情况?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 2021-10-24
  • 2011-03-11
  • 2020-05-24
  • 1970-01-01
相关资源
最近更新 更多