Qt程序版本号之rc文件

发布的应用程序,可以设置版本号,鼠标右键exe文件,属性中查看,像这样:

Qt程序版本号之rc文件

那么问题来了,怎么做到的?

因为只有win32平台才有这个东西,所以qt没有提供相关的接口。只有用其他办法了。其中比较简单的办法就是:使用.rc文件给win32平台的程序增加版本等信息。

但是,经常会发布出去的除了exedll,还有lib,貌似lib文件不能有版本信息。

那什么是.rc文件?

https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa380599(v=vs.85).aspx

摘要:开发windows平台应用程序管理资源的文件。.rc文件是管理程序icon、鼠标图片、等资源的脚本,会被编译和链接到exedll文件。编译这个rc文件要使用RC (The RC Command Line),编译出来是.res文件。当然,我们不会自己去编译它了。

Qt工程中怎么使用.rc文件?

.pro里指定RC_FILE = .rc文件的路径:

Qt程序版本号之rc文件

.rc文件的语法可以看看rc脚本管理的资源种类:比如BITMAPICONVERSIONINFO等等。

https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa381043(v=vs.85).aspx

也可以看看版本相关的变量和官方例子:比如FileVersionProductNameProductVersion等等。

https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa381058(v=vs.85).aspx

都是官方的文档啦,懒的同学直接看下面的myVersion.rc小例子也可以凑合用了:(具体语法我也没深究,可用,不保证100%正确)

#if defined(UNDER_CE)

#include

#else

#include

#endif

VS_VERSION_INFO VERSIONINFO

 

    FILEVERSION 1,4,1,12

    FILEFLAGSMASK 0x3fL

 

#ifdef _DEBUG

    FILEFLAGS VS_FF_DEBUG

#else

    FILEFLAGS 0x0L

#endif

    FILEOS VOS__WINDOWS32

    FILETYPE VFT_DLL

    FILESUBTYPE 0x0L

    BEGIN

 

        BLOCK "StringFileInfo"

        BEGIN

            BLOCK "080404b0"//Simplified Chinese, Unicode

            BEGIN

 

                VALUE "FileDescription", "MyVersion"

                VALUE "LegalCopyright", "Copyright (C) 2017-2022"

                VALUE "OriginalFilename", ""

                VALUE "ProductName", "My Version"

                VALUE "ProductVersion", "2.4.3.1"

 

            END

        END

 

        BLOCK "VarFileInfo"

        BEGIN

            VALUE "Translation", 0x804, 1200 //Simplified Chinese, Unicode

        END

    END

好了,加了myVersion.rc文件,重新构建编译工程,就带版本信息啦!

相关文章: