VC自动生成软件版本号
flyfish
目的:
软件的版本有主版本号.子版本号.修正版本号.编译版本号
其中编译版本号与SVN服务器的版本号(Revision)自动同步。
环境
需要在本机安装TortoiseSVN
第一步
在项目的.rc文件中搜索VS_VERSION_INFO VERSIONINFO
按照下面例子更改
#ifdef _AUTO_INCREMENT_VERSION FILEVERSION2,0,4,$WCREV$ PRODUCTVERSION2,0,4,$WCREV$ #else FILEVERSION2,0,4,1 PRODUCTVERSION2,0,4,1 #endif #ifdef _AUTO_INCREMENT_VERSION VALUE"FileVersion", "2.0.4.$WCREV$" VALUE"ProductVersion", "2, 0, 4, $WCREV$" #else VALUE"FileVersion", "2.0.4.1" VALUE"ProductVersion", "2, 0, 4, 1" #endif
如果不写条件编译命令 #ifdef,#else,#endif 直接更改2,0,4,$WCREV$。VC的资源视图无法解析 $WCREV$。
undefined keyword or key name: $WCREV$
第二步
VC环境设置 项目属性-》生成事件-》预先生成事件 命令行
拷贝如下两行
C:\ProgramFiles\TortoiseSVN\bin\subwcrev.exe $(SolutionDir)$(ProjectDir)$(ProjectName).rc $(ProjectDir)$(ProjectName).rc_ rc.exe /fo$(ProjectDir)$(IntDir)$(ProjectName).res /d _AUTO_INCREMENT_VERSION /d _AFXDLL$(ProjectName).rc_
C:\ProgramFiles\TortoiseSVN\bin\subwcrev.exe 更改你自己的TortoiseSVN安装路径
工具1:SubWCRev.exe
SubWCRev.exe是TortoiseSVN自带的工具,通过TortoiseSVN\bin目录下的SubWCRev.exe命令行工具
读取服务器的Revision修正版本号
在模版中执行关键字替换,达到修改同步本地版本号的目的。
命令行参数
SubWCRev WorkingCopyPath [SrcVersionFileDstVersionFile] [-nmdfe]
工具2:rc.exe
rc.exe是VC自带的资源编译器ResourceCompiler 。
命令行参数
RC [options] script-file
options是编译选项,script-file是编译的脚本文件
fo 创建res文件名称
d 为预处理器(preprocessor)定义符号
_AFXDLL 表示在共享DLL中使用MFC
宏说明
$(SolutionDir) 解决方案的目录(定义为驱动器 + 路径);包括尾部的反斜杠“\”。
$(ProjectDir) 项目的目录(定义为驱动器 + 路径);包括尾部的反斜杠“\”。
$(ProjectName) 项目的基本名称。
$(IntDir) 为中间文件指定的相对于项目目录的目录路径。它解析为“中间目录”属性的值。
参考链接
Using RC (The RC Command Line)
生成命令和属性的宏
The SubWCRev Command Line