Qt:qmake中VERSION和VER_MAJ,VER_MIN,VER_PAT之间的差异

时间:2019-01-17 14:21:16

标签: c++ qt version qmake

我正在将Linux用于Qt5中的共享库。

由于在.pro中使用了以下任何一项:

VERSION = 1.2.3

VER_MAJ = 1
VER_MIN = 2
VER_PAT = 3

为库生成相同的输出名称(lib.so,lib.so.1,lib.so.1.2,lib.so.1.2.3),实际区别是什么?

Qt文档状态:

  

版本(如果应用程序为   指定模板或库的版本号(如果使用lib)   指定模板。

     

VER_MAJ 指定库的主版本号(如果是lib)   指定模板。

     

VER_MIN 指定库的次版本号,如果lib   指定模板。

     

VER_PAT 指定库的补丁程序版本号(如果是lib)   指定模板。

由于我没有使用app模板,两者是否相同?我为什么有理由选择其中之一?

编辑:在che库版本输出的定义中,VER_MAJ, VER_MIN, VER_PAT似乎总是比VERSION优先,无论定义顺序如何。

1 个答案:

答案 0 :(得分:1)

  

Qt文档状态

关于qmake,至少可以说,Qt文档并不十分准确。人们应该始终参考qmake的源代码以了解真相。

因此,在深入研究源代码之后,它看起来像:

  1. Win VERSION用于Windows资源(应用程序和库); VER_MAJ仅用于共享库后缀(例如“ mylib1.dll”);如果未设置VER_MAJ,则从VERSION进行初始化; VER_MINVER_PAT被忽略。
  2. * nix VERSION被忽略,除非未直接设置VER_MAJVER_MINVER_PAT中的某些,则它们是从VERSION间接初始化。

因此,对于Win来说,应该只使用VERSION。对于* nix,没有真正的区别。