Visual Studio自动生成文件版本信息
一、 前言
通常,要控制输出文件的版本信息,只需要手动修改资源rc文件中的Version,即可在输出文件的文件属性里查看到对应的版本信息。如下图:
但是,版本号是会随时都更新的,每次build都需要手动修改,显然有点麻烦。下面以SA_CMS项目为例,详细说明了如何利用subversion的命令行工具和一些宏来达到自动版本控制的目的步骤。
二、 自动版本控制
Step1
在.vcproj所在目录下,新建一个文本文件,命名为Version.def,然后添加如下宏信息:
1 #define MAJOR_VERSION 1 2 3 #define MINOR_VERSION 0 4 5 #define INNER_VERSION 0 6 7 #define REV_VERSION $WCREV$ 8 9 10 11 #define _VER2STR(ver) #ver 12 13 #define VER2STR(ver) _VER2STR(ver) 14 15 16 17 #define VERSION VER2STR(MAJOR_VERSION) \ 18 19 "."VER2STR(MINOR_VERSION) \ 20 21 "."VER2STR(INNER_VERSION) \ 22 23 "."VER2STR(REV_VERSION) 24 25 26 27 #define MAKE_DATETIME_SVN $WCNOW$ 28 29 #define MAKE_DATETIME VER2STR(MAKE_DATETIME_SVN) 30 31 32 33 #define PRODUCT_NAME "XXXXX系统" 34 35 #define PRODUCT_VER_VAL 1,0,0,0 36 37 #define PRODUCT_VER_STR "1.0.0.0\0" 38 39 #define COMPANY_NAME "AAAAAA Co., Ltd." 40 41 #define LEGAL_COPYRIGHT "Copyright (C) 2015 AAAAAA Co., Ltd." 42 43 44 45 #define FILE_VERSION_VAL MAJOR_VERSION,MINOR_VERSION,INNER_VERSION,REV_VERSION 46 47 #define FILE_VERSION_STR VER2STR(MAJOR_VERSION.MINOR_VERSION.INNER_VERSION.REV_VERSION) 48 49 #ifdef WIN64 50 51 #define FILE_DESC "SA_CMS 动态链接库(64 bit)" 52 53 #else 54 55 #define FILE_DESC "SA_CMS 动态链接库(32 bit)" 56 57 #endif 58 59 #define ORIGINAL_FILE_NAME "" 60 61 #define FILE_COMMENTS ""
注意:版本号的数值是以逗号“,”隔开,而版本号字符串的值是以“.”隔开
Step2
在工程的属性页,增加预生成事件命令行 SubWCRev ./ ./Version.def ./Version.h
工程在build之前,会在同一个目录下自动通过subversion 生成一个Version.h头文件。
如图:
Step3
打开添加资源对话框,双击Version,自动添加Version资源rc文件到VS工程。
Step4
在resource.h里最后添加一句 #include “Version.h”,并以换行结尾。
Step5
右键打开资源rc文件,查看代码
Step6
找到Version段,根据需要,用Version.h里面的宏替换版本信息相应的字段,然后保存。
最后build一下工程。输出文件的文件版本属性如下:
本博客内容为原创。网友转载请给出文章出处和我的名字。