【问题标题】:Qt: difference between VERSION and VER_MAJ, VER_MIN, VER_PAT in qmakeQt:qmake中VERSION和VER_MAJ、VER_MIN、VER_PAT的区别
【发布时间】:2019-06-11 18:32:23
【问题描述】:

我在 Qt5 中使用 linux 作为共享库。

因为在.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 文档说明:

VERSION 指定应用程序的版本号,如果应用程序 指定模板或库的版本号(如果库) 模板已指定。

VER_MAJ 指定库的主版本号,如果 lib 模板已指定。

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

VER_PAT 指定库的补丁版本号 模板已指定。

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

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

【问题讨论】:

    标签: c++ qt version qmake


    【解决方案1】:

    Qt 文档状态

    关于qmake,至少可以说,Qt 文档并不准确。应该经常查阅qmake 的源代码以找出真相。

    所以在对源代码进行了一些挖掘之后,它看起来像:

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

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

    【讨论】:

    • 试试我确实展示了你所说的完全相反:当VERSIONVER_MAJ, VER_MIN, VER_PAT都被定义时,后者在生成.so版本号时优先于VERSION。申报顺序不计算在内。至少我的 Linux 发行版会发生这种情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    相关资源
    最近更新 更多