CodeBlocks中自带了一个插件Autoversioning,给项目启用此插件后,自动在项目中添加了一个"version.h"头文件(文件名可自行命名),内容大致如下:
#ifndef VERSION_H
#define VERSION_H
namespace AutoVersion{
//Date Version Types
static const char DATE[] = "08";
static const char MONTH[] = "12";
static const char YEAR[] = "2013";
static const char UBUNTU_VERSION_STYLE[] = "13.12";
//Software Status
static const char STATUS[] = "Alpha";
static const char STATUS_SHORT[] = "a";
//Standard Version Type
static const long MAJOR = 1;
static const long MINOR = 0;
static const long BUILD = 7;
static const long REVISION = 39;
//Miscellaneous Version Types
static const long BUILDS_COUNT = 11;
#define RC_FILEVERSION 1,0,7,39
#define RC_FILEVERSION_STRING "1, 0, 7, 39\0"
static const char FULLVERSION_STRING [] = "1.0.7.39";
//These values are to keep track of your versioning state, don't modify them.
static const long BUILD_HISTORY = 7;
}
#endif //VERSION_H
其中能够用于Resource中引用的两个宏是:"RC_FILEVERSION","RC_FILEVERSION_STRING",可以在工程的含有版本信息的资源文件中按如下引用:
#include "version.h"
1 VERSIONINFO
FILEVERSION RC_FILEVERSION
PRODUCTVERSION 1,0,0,0
FILEOS 0x00000004
FILETYPE 0x00000000
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "08040000"
BEGIN
VALUE "FileVersion", RC_FILEVERSION_STRING
VALUE "ProductName", "myAPP\0"
VALUE "ProductVersion", "1.0.0.0"
VALUE "CompanyName", "Bowa's Studio\n"
VALUE "LegalCopyright", "(C)Bowa's Studio, 2013\n"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0804, 0x0000
END
END
由于CodeBlocks的Autoversioning插件不维护诸如产品名称、程序描述、公司名称、版权等信息,因为基本上这些信息属于静态类,如果说工程项目组中有多个需要包含此类版本信息时,建议单独写一个头文件(比如product.h),然后在版本资源文件中引入就可以,参考如下:
#include "version.h"
#include "product.h"
1 VERSIONINFO
FILEVERSION RC_FILEVERSION
PRODUCTVERSION 1,0,0,0
FILEOS 0x00000004
FILETYPE 0x00000000
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "08040000"
BEGIN
VALUE "FileVersion", RC_FILEVERSION_STRING
VALUE "ProductName", PRODUCTNAME_STRING
VALUE "ProductVersion", PRODUCTVERSION_STRING
VALUE "CompanyName", COMPANYNAME_STRING
VALUE "LegalCopyright", LEGALCOPYRIGHT_STRING
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0804, 0x0000
END
END
这样既能利用Autoversioning插件的自动文件版本号管理,也能形成完整的产品包信息
通过引用头文件宏的方式配置的资源文件,用ResED工具打开时会出现问题,但是用ResEdit工具就能正常识别并直接转换。其中ResED很久没有更新过了,两个工具都能在win7 x64下正常使用。我在优快云上做了文件备份,可以前往下载