我正在将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
优先,无论定义顺序如何。
答案 0 :(得分:1)
Qt文档状态
关于qmake
,至少可以说,Qt文档并不十分准确。人们应该始终参考qmake
的源代码以了解真相。
因此,在深入研究源代码之后,它看起来像:
VERSION
用于Windows资源(应用程序和库); VER_MAJ
仅用于共享库后缀(例如“ mylib1.dll”);如果未设置VER_MAJ
,则从VERSION
进行初始化; VER_MIN
和VER_PAT
被忽略。VERSION
被忽略,除非未直接设置VER_MAJ
,VER_MIN
或VER_PAT
中的某些,则它们是从VERSION
间接初始化。因此,对于Win来说,应该只使用VERSION
。对于* nix,没有真正的区别。