Qt 使用SVN动态生成exe程序可执行文件的版本信息

这篇博客介绍了如何在Qt工程中利用SVN的SubWCRev.exe工具动态更新资源文件,从而在编译时自动插入SVN版本号到exe的版本信息中。通过在pro文件中设置自定义变量和命令,可以实现每次编译时从myapp.rc.template生成myapp.rc,并在最终的exe中显示版本和修订信息。
摘要由CSDN通过智能技术生成

首先在有SVN版本控制的qt工程pro文件中加入以下几行 

SVN_BIN_PATH = C:/Program Files/TortoiseSVN/bin

BEFORE_LINK_CMD_LINE = $$SVN_BIN_PATH/SubWCRev.exe $$PWD/ $$PWD/myapp.rc.template $$PWD/myapp.rc

QMAKE_PRE_LINK += $$quote($$BEFORE_LINK_CMD_LINE)

RC_FILE += $$PWD/myapp.rc
SVN_BIN_PATH
        自定义变量,存放SVN bin目录,根据需要换成自己的SVN安装目录

BEFORE_LINK_CMD_LINE
        自定义变量,存放动态更新rc资源文件的命令,这个命令是关键,详情可以搜索SVN SubWCRev.exe用法,其中myapp.rc.template 这个文件很重要,SubWCRev.exe会替换这个文件中的$WCREV$变量为SVN版本号,生成一个新的文件myapp.rc,我们的Qt工程就是使用myapp.rc这个资源文件来生成exe的版本信息

QMAKE_PRE_LINK
        pro官方变量,表示编译前执行内容

RC_FILE pro
        官方变量,会根据该文件信息,生成exe版本信息

myapp.rc.template文件见下文 ,如果需要添加应用程序的图标,在放一个myapp.ico文件,最后建一个myapp.rc的空文件,这三个文件放在pro 同级目录下,myapp.rc.template文件第一行就是添加ico图标信息,引号里边是图标路径,可使用相对路径和绝对路径,然后构成生成的exe就有版本信息了,注意第一次构建版本信息会生成失败,可能因为第一次myapp.rc这个文件是空的,建议每次SVN上传的时候将这两个文件上传
 

myapp.rc.template

IDI_ICON1 ICON "myapp.ico"

#if defined(UNDER_CE)
#include <winbase.h>
#else
#include <winver.h>
#endif

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 6,0,0,$WCREV$
 PRODUCTVERSION 6,0,0,$WCREV$
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x21L
#else
 FILEFLAGS 0x20L
#endif
 FILEOS 0x40004L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "080004b0"
        BEGIN
            VALUE "CompanyName", "XXX"
            VALUE "FileDescription", "MyApp Application"
            VALUE "FileVersion", "6, 0, 0, $WCREV$"
            VALUE "InternalName", "MyApp "
            VALUE "LegalCopyright", "Copyright (C) 2021"
            VALUE "OriginalFilename", "MyApp .exe"
            VALUE "ProductName", "MyApp Application"
            VALUE "ProductVersion", "6, 0, 0, $WCREV$"
            VALUE "SpecialBuild", "6, 0, 0, $WCREV$"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x800, 1200
    END
END

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值