原理
SVN中的可执行文件SubWCRev.exe,该文件可以查看工作目录的当前svn号并且保存在变量$WCREV$
中。因此,可以先写一个批处理,然后在项目的预生成命令中执行该批处理文件。
VS编译时自动化生成版本示例:
在需要添加版本的工程目录下新建文件夹(以Setup为例), 在svn 客户端的安装目录下找到Subwcrev.exe并复制到Setup文件夹下(Subwcrev.exe 可执行文件通常在 svn 客户端的安装目录下,比如TortoiseSVN 是在其安装目录的bin文件夹下),另外新建批处理文件GenerateRevision.bat和生成版本模板文件version_template.h,目录如下图。
SubWCRev.exe用法
#SubWCRev.exe WorkingCopyPath Template DestFile
参数说明:
WorkingCopyPath:要查看的工作目录路径,一般取解决方案目录
Template:模版文件
DestFile:生成的目标文件
GenerateRevision.bat
"SubWCRev.exe" "%~dp0.." "%~dp0version_template.h" "%~dp0../工程目录/version.h" %1
%~dp0 标识当前目录
%1 当前输入的第一个参数
version_template.h
#define FILEVER 1,0,0,$WCREV$
#define PRODUCTVER 1,0,0,$WCREV$
#define STR_FILEVER "1,0,0,$WCREV$"
#define STR_PRODUCTVER "1,0,0,$WCREV$"
注意version_template.h的最后要加一个换行符,不然编译时会以下错误,原因是version.h末尾缺少换行符
现在双击GenerateRevision.bat生成目标文件,在”%~dp0../工程目录”目录下找到version.h。
接下来在解决方案中添加现有项xxx.rc文件->双击xxx.rc文件打开资源视图->选中xxx.rc有右键“添加资源”->选择Version
修改xxx.rc文件内容,还有版本的其实信息在对应字符串修改
最后把GenerateRevision.bat添加到预编译文件
现在自动化生成版本配置完成,每提交一次代码,SVN上会记录一个版本信息,程序在每次预编译的时候执行会GenerateRevision.bat文件通过SubWCRev.exe获得最新的版本号。