【发布时间】:2017-12-08 12:45:19
【问题描述】:
我的 Windows Qt 小部件应用程序使用“version.h”文件和“RC”文件针对可执行文件填充版本信息字符串。
version.h 看起来像这样...
#ifndef VERSION_H
#define VERSION_H
#define VERSION_MAJOR 1
#define VERSION_MINOR 0
#define VERSION_BUILD 3
#define VER_FILEVERSION VERSION_MAJOR,VERSION_MINOR,VERSION_BUILD,0
#define STR_FILEVERSION VERSION_MAJOR##"."##VERSION_MINOR##"."VERSION_BUILD##".0"
// Keep the product version as fixed
#define VER_PRODUCTVERSION 1.0.0.0
#define STR_PRODUCTVERSION "1.0.0.0\0"
#define STR_COMPANYNAME "MyCompany"
#define STR_FILEDESCRIPTION "MyFile"
#define STR_INTERNALNAME "MyFile"
#define STR_LEGALCOPYRIGHT "Copyright © 2017 MyCompany"
#define STR_LEGALTRADEMARKS1 "All Rights Reserved"
#define STR_LEGALTRADEMARKS2 STR_LEGALTRADEMARKS1
#define STR_ORIGINALFILENAME "MyApp.exe"
#define STR_PRODUCTNAME "MyApp"
#define STR_COMPANYDOMAIN "mywebsite.com"
#endif // VERSION_H
RC 文件看起来像:
IDI_APP_ICON ICON DISCARDABLE "MyApp.ico"
#include <windows.h>
#include "version.h"
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
PRODUCTVERSION VER_PRODUCTVERSION
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
BEGIN
VALUE "CompanyName", STR_COMPANYNAME
VALUE "FileDescription", STR_FILEDESCRIPTION
VALUE "FileVersion", STR_FILEVERSION
VALUE "InternalName", STR_INTERNALNAME
VALUE "LegalCopyright", STR_LEGALCOPYRIGHT
VALUE "LegalTrademarks1", STR_LEGALTRADEMARKS1
VALUE "LegalTrademarks2", STR_LEGALTRADEMARKS2
VALUE "OriginalFilename", STR_ORIGINALFILENAME
VALUE "ProductName", STR_PRODUCTNAME
VALUE "ProductVersion", STR_PRODUCTVERSION
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1252
END
END
为了完整起见,“.pro”文件里面有这一行:
RC_FILE = MyApp.rc
这一切似乎都正常:当我右键单击 exe 并转到详细信息选项卡时,我可以从合并的 version.h 和 RC 文件中看到版本信息和所有其他字符串。
但是,如果我增加任何一个 VERSION_XXX #define 值并构建应用程序,我注意到报告的“文件版本”没有改变 - 只有当我执行“重建”时版本才会改变.
我真的不想每次增加版本信息(目前主要是 VERSION_BUILD)时都必须进行完整的重建,所以我可能需要做什么才能在每次构建 exe 时更新此信息?
【问题讨论】:
标签: c++ qt versioning