【问题标题】:Qt. Automatically adding version for applicationQt。为应用程序自动添加版本
【发布时间】:2012-05-11 10:59:21
【问题描述】:

.pro 文件中,我可以设置应用程序的版本,例如:

VERSION = <some version>

有没有办法自动执行此操作(例如从 Mercurial 获取值)?

【问题讨论】:

    标签: qt qmake


    【解决方案1】:

    如果您可以从 shell 命令获取版本,则可以使用 $$system qmake 函数将其分配给变量。

    所以,对于多变的,你可以试试:

    # if the version tag is <major version>.<minor version> 
    VERSION = $$system(hg parents --template '{latesttag}.{latesttagdistance}')
    # or if you fill all 3 positions manually: <major>.<minor>.<patchset>
    VERSION = $$system(hg parents --template '{latesttag}')
    

    或者如果您使用本地修订号作为版本:

    VERSION = $$system(hg parents --template '{rev}')
    

    只会打印没有未提交更改指示符 ('+') 的数字。

    【讨论】:

    • 谢谢。但存在更简单的解决方案。您可以使用 $$system($$(PWD)/hg id -n)。在这种情况下,将返回存储库的版本号。但问题是 mercurial 可以返回带有符号“+”的数字。这是版本号中的无效字符。
    • @Milovidov 你可以在replace()的帮助下去掉'+':VERSION = $$replace(VERSION, "+", "")
    • @Milovidov 您也可以使用模板仅返回数字部分(我编辑了答案)。
    • 为我工作了很长时间,直到我安装了 VS2012。然后它开始因 COFF 错误而失败,如stackoverflow.com/questions/14139685/… 中所述,也许有人有想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 2015-08-17
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2021-09-26
    • 2012-07-06
    相关资源
    最近更新 更多