如何在Qt中读取库版本?

时间:2013-09-27 09:31:27

标签: qt versioning qmake

我想用Qt方法读取动态库的库版本(Mac上的.dylib和Windows上的.dll)。假设我随着时间的推移创建了几个版本的给定库,现在我想阅读版本本身。我们可以将该版本添加到项目中,请参阅:add version

  1. 知道如何阅读Qt库版本:QT_VERSION_STR
  2. 知道如何阅读我的应用程序版本:QApplication::applicationVersion()
  3. 我手动创建了一些版本的库。现在我希望能够从文件(.dylib或.dll)中读取设置的版本。

2 个答案:

答案 0 :(得分:0)

AFAIK,qmake中的VERSION变量实际上并没有改变目标文件中的任何内容,至少不适用于Windows。 (我实际上检查了Makefile以验证它。)

我的建议是你将版本号烘焙到目标文件本身,并提供一个可调用的方法来检索它。

答案 1 :(得分:0)

我发布它已经有一段时间但是@Liviu要求我会尝试自己回答。
首先,我没有找到令人满意的基于Qt的解决方案。

为了便于分析,可以使用Qt例程来提供安全的使用,我建议在宏QT_VERSION_CHECK的帮助下创建带有安全检查的新动态库,以防止继续使用旧的Qt版本:

#include <QtGlobal>`
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
#include <QtWidgets>
#else
#include <QtGui>
#endif

但是,如果库已经创建并可能部署在某些本地计算机上,则无法应用 这种解决方案。在这种情况下,需要某种依赖解析器。即在Linux机器上它可能是ldd功能利用率,请参阅SO answer。在osx中​​,应使用 otool 解析工具。解析的信息应包含库文件创建期间使用的Qt版本(.dll,.dylib或.so文件)。