利用Qt依赖项来避免二进制文件的重复

时间:2018-11-11 17:43:48

标签: qt dependencies shared-libraries static-libraries reusability

Qt利用了很多第三方库来进行图像编码,压缩,加密,音频和视频编解码器支持等等。

从历史上看,当我想利用它们时,我总是不得不将它们作为附加依赖项包括在内。我一直想知道是否有一种方法可以简单地重用Qt已经包含的二进制文件?

1 个答案:

答案 0 :(得分:2)

这确实取决于库,但总的来说,这是不可能的。

Qt静态地构建和链接大多数第三方库,而不会导出任何符号(请参见libpng作为示例)。有些甚至只链接到插件中,而不链接到Qt库中(例如sqlite,它只是由插件导入的pri文件)。找出具体情况的唯一方法是检查不同Qt存储库中的src/3rdparty子文件夹。

还有另外一点需要考虑:Qt经常尝试通过使用操作系统提供的功能来满足依赖关系。即如果Qt在主机系统上找到libpng,它通常会链接到该库,因此该代码甚至不再是Qt二进制文件的一部分,即使将符号导出到一个具体的库,编译时链接也取决于Qt配置。 / p>

唯一的例外是静态链接Qt。在这种情况下,链接器仅在链接最终应用程序后才拉入所有这些3rdparty依赖项,从而使您可以链接到Qt使用的库。