本文共 2944 字,大约阅读时间需要 9 分钟。
svn服务提供了一些宏定义,大多与版本管理相关的环境变量,通过SubWCRev可以将这些宏信息取值用于我们的产品版本信息里
本人示例代码中采用的是在redhat6.5中安装subversion服务,在win安装svn客户端TortoiseSVN。
首先创建一个文件org_version.h(如下),并将该文件add及提交到svn服务上:
#pragma once
//svn取值 #define VERSION_BUILD_NUMBER $WCREV$ #define STR_BUILD_NUMBER "$WCREV$" #define STR_VERSION_BUILD "(B$WCREV$ $WCNOW$)" #define STR_VERSION_DATE "$WCDATE$" #define STR_VERSION_URL "$WCURL$" #define STR_VERSION_NOW "$WCNOW$" #define NSTR_VERSION_NOW $WCNOW$ //自定义 #define STR_VERSION_VERSION "V1.2.$WCREV$" #define STR_VERSION_COMPANY "*** company" #define STR_VERSION_FILEDESC "you file desc" #define STR_VERSION_FILEVER STR_VERSION_VERSION #define STR_VERSION_LEGAL "*** All rights reserved" #define STR_VERSION_PRODUCTNAME "you software name" #define STR_VERSION_TELE "+86 tel" #define STR_VERSION_FAX "+86 fax" #define STR_VERSION_WEB "www.youweb.com" #define STR_VERSION_POSTCODE "post code" #define STR_VERSION_ADDRESS "address"文件中带$ 的是需要从svn服务取值的宏
win+R启动命令窗口,cd到所在目录通过SubWCRev(目录 源文件 目标文件)命令,如
SubWCRev ./ version.h__ version.h(当然实际工作中可以将该命令配置在工程文件[例如makefile或vs代码文件的命令选项]中在编译时自行调用)
将在源文件所在目录生成一个目标文件version.h,
#pragma once
//svn取值 #define VERSION_BUILD_NUMBER 5 #define STR_BUILD_NUMBER "5" #define STR_VERSION_BUILD "(B5 2017/04/04 21:18:43)" #define STR_VERSION_DATE "2017/04/04 21:18:39" #define STR_VERSION_URL "svn://192.168.163.128/common/muparser" #define STR_VERSION_NOW "2017/04/04 21:18:43" #define NSTR_VERSION_NOW 2017/04/04 21:18:43 //自定义 #define STR_VERSION_VERSION "V1.2.5" #define STR_VERSION_COMPANY "*** company" #define STR_VERSION_FILEDESC "you file desc" #define STR_VERSION_FILEVER STR_VERSION_VERSION #define STR_VERSION_LEGAL "*** All rights reserved" #define STR_VERSION_PRODUCTNAME "you software name" #define STR_VERSION_TELE "+86 tel" #define STR_VERSION_FAX "+86 fax" #define STR_VERSION_WEB "www.youweb.com" #define STR_VERSION_POSTCODE "post code" #define STR_VERSION_ADDRESS "address"我们就可以在工程中引用该文件,取得我们需要的信息对软件产品进行描述,例如我们可以在代码中引用这些信息表明产品的版本,生产日期等等
也可以加入资源文件中进行描述,例如.rc文件,看下面的示列:
#if defined(UNDER_CE)
#include <winbase.h> #else #include <winver.h> #endif #include "version.h" / // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 3,2,2,VERSION_BUILD_NUMBER PRODUCTVERSION 3,2,2,VERSION_BUILD_NUMBER FILEFLAGSMASK 0x17L #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x4L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "080404b0" BEGIN VALUE "CompanyName", STR_VERSION_COMPANY VALUE "FileDescription", STR_VERSION_FILEDESC VALUE "FileVersion", STR_BUILD_NUMBER VALUE "InternalName", STR_VERSION_PRODUCTNAME VALUE "LegalCopyright", STR_VERSION_LEGAL VALUE "OriginalFilename", STR_VERSION_PRODUCTNAME VALUE "ProductName", STR_VERSION_PRODUCTNAME VALUE "ProductVersion", STR_VERSION_VERSION END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x804, 1200 END END // //ico IDI_ICON1 ICON DISCARDABLE "iconApp.ico"这样就不用生成及发布软件是自己修改资源文件
当软件出现bug想回溯查看是就能根据版本号调出对应的历史代码
转载地址:http://faghx.baihongyu.com/