Qt程序版本号之rc文件
发布的应用程序,可以设置版本号,鼠标右键exe文件,属性中查看,像这样:
那么问题来了,怎么做到的?
因为只有win32平台才有这个东西,所以qt没有提供相关的接口。只有用其他办法了。其中比较简单的办法就是:使用.rc文件给win32平台的程序增加版本等信息。
但是,经常会发布出去的除了exe和dll,还有lib,貌似lib文件不能有版本信息。
那什么是.rc文件?
https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa380599(v=vs.85).aspx
摘要:开发windows平台应用程序管理资源的文件。.rc文件是管理程序icon、鼠标图片、等资源的脚本,会被编译和链接到exe或dll文件。编译这个rc文件要使用RC (The RC Command Line),编译出来是.res文件。当然,我们不会自己去编译它了。
Qt工程中怎么使用.rc文件?
在.pro里指定RC_FILE = .rc文件的路径:
.rc文件的语法可以看看rc脚本管理的资源种类:比如BITMAP、ICON、VERSIONINFO等等。
https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa381043(v=vs.85).aspx
也可以看看版本相关的变量和官方例子:比如FileVersion、ProductName、ProductVersion等等。
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文件,重新构建编译工程,就带版本信息啦!