1、在VS2013中利用SVN自动更新版本号

(1)、方法一:利用subwcrev.exe中的宏:
$WCREV$ : 获取SVN的版本号
$WCURL$ : 获取SVN的地址

关于subwcrev.exe参见: 
http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-subwcrev.html 
http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-subwcrev-keywords.html

subwcrev.exe基本格式是: 
SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile] [-nmdfe]
所以需要在VS对应的工程中新建两个文件,一个是SrcVersionFile和DstVersionFile,其中: 
WorkingCopyPath             #工程所在的目录
SrcVersionFile              #含有SubWCRev.exe程序可以替换的宏;
DstVersionFile              #为更新svn之后把宏替换掉以后的目标文件。

例如: 
SrcVersionFile为一个头文件,名字叫Template.Source.Version.h,其内容如下:

#pragma once#define VER_UMS_HQ_MAJOR    2
#define VER_UMS_HQ_MINOR    2
#define VER_UMS_HQ_SVN  $WCREV$#define VER_UMS_HQ_REVISION "2.2.$WCREV$.0"

DstVersionFile文件为另外一个头文件,名字叫Source.Version.h,其内容如下:

#pragma once#define VER_UMS_HQ_MAJOR    2
#define VER_UMS_HQ_MINOR    2
#define VER_UMS_HQ_SVN  8465#define VER_UMS_HQ_REVISION "2.2.8465.0"

然后在工程属性设置: 
Build Event选项->Pre-Build Event的Command Line中输入:

subwcrev.exe “./” “./Template.Source.Version.h” “./Source.Version.h”

这样每次用svn更新代码时,svn的项目版本号也更新下来了,并最重替换掉 Template.Source.Version.h中宏WCREV,生成Source.Version.h中的内容。最后在其它文件中就可以使用这个VER_UMS_HQ_REVISION的定义了,例如在程序版本号中使用:

VS_VERSION_INFO VERSIONINFOFILEVERSION VER_UMS_HQ_MAJOR,VER_UMS_HQ_MINOR,VER_UMS_HQ_SVN,0PRODUCTVERSION VER_UMS_HQ_MAJOR,VER_UMS_HQ_MINOR,VER_UMS_HQ_SVN,0FILEFLAGSMASK 0x3fL
#ifdef _DEBUGFILEFLAGS 0x1L
#elseFILEFLAGS 0x0L
#endifFILEOS 0x4LFILETYPE 0x2LFILESUBTYPE 0x0L
BEGINBLOCK "StringFileInfo"BEGINBLOCK "040904e4"BEGINVALUE "CompanyName", "Zealink.Com"VALUE "FileDescription", "Zealink.UMSHQ"VALUE "FileVersion", VER_UMS_HQ_REVISIONVALUE "InternalName", "Zealink.UMS.HQ.dll"VALUE "LegalCopyright", "Zealink.Com  All rights reserved."VALUE "OriginalFilename", "Zealink.UMS.HQ.dll"VALUE "ProductName", "UMS"VALUE "ProductVersion", VER_UMS_HQ_REVISIONENDENDBLOCK "VarFileInfo"BEGINVALUE "Translation", 0x409, 1252END
END

(2)、方法二:利用资源文件

1>、以代码方式打开XXX.rc
2>、修改:
FILEVERSION 1, 0, 0, 1
PRODUCTVERSION 1, 0, 0, 1

为:

FILEVERSION 1, 0, 0, $WCREV$
PRODUCTVERSION 1, 0, 0, $WCREV$

3>、修改:

 VALUE "FileVersion", "1.0.0.1"VALUE "ProductVersion", "1.0.0.1"

为:

 VALUE "FileVersion", "1.0.0.$WCREV$"VALUE "ProductVersion", "1.0.0.$WCREV$"

4>、打开项目属性->生成事件->预先生成事件->命令行
添加:

copy $(ProjectDir)$(ProjectName).rc $(ProjectDir)_$(ProjectName).rc /y
subwcrev . $(Projectdir)$(ProjectName).rc $(Projectdir)$(ProjectName).rc

项目属性->生成事件->后期生成事件->命令行

copy $(ProjectDir)_$(ProjectName).rc $(ProjectDir)$(ProjectName).rc /y

编译后,build自动更新为SVN最后提交版本

参考网址:http://blog.csdn.net/xuly_29/article/details/50623103
参考网址:http://blog.csdn.net/analogous_love/article/details/47293509

2、在Makefile中定义一个变量

REV=`svn info | grep Revision | awk '{print $2}'`
#或者
REV=`svn info | grep Revision | cut -d " " -f 2`
REV=`svnversion ../../`

而后在编译命令行中加入宏

-DREV=$(REV)  

使用命令:

svn info |grep Revision: |awk '{print $2}

参考网址:https://stackoverflow.com/questions/1991526/current-subversion-revision-command

参考网址:http://www.runoob.com/linux/linux-comm-awk.html

在VS2013以及Linux系统中利用SVN自动更新版本号相关推荐

  1. Linux 系统中利用 apt-get 管理软件的安装目录和安装路径

    Linux 系统中利用 apt-get 管理软件的安装目录和安装路径 apt-get 下载软件存放路径: /var/cache/apt/archives lib 文件路径: /usr/lib 可执行文 ...

  2. Linux系统中关闭google浏览器更新提示

    如果Linux系统中使用了google浏览器提示更新又不想更新,与windows中方式类似也是使用--disable-background-networking. 使用vim google-chrom ...

  3. Linux系统中利用C语言控制LED的方法

    大家好, 今天主要和大家聊一聊,如何利用C语言控制LED灯的实验. 目录 ​第一:C语言板控制LED灯简介 第二:实验程序实现 ​第三:C语言实验控制程序 ​第一:C语言板控制LED灯简介 实际工作中 ...

  4. Linux命令行截屏,linux 系统中利用终端命令截屏

    几个常用的import命令介绍给大家: 1 import mypicture.jpg 然后可以使用鼠标选择的范围 2 sleep 5; import mypicture.jpg 等待5秒钟后,截取鼠标 ...

  5. linux设置系统自动开机,Linux系统中设置开机自动运行的两种方法

    有时可能会需要在重启时或者每次系统启动时运行某些命令或者脚本.我们要怎样做呢?本文中我们就对此进行讨论. 我们会用两种方法来描述如何在 CentOS/RHEL 以及 Ubuntu 系统上做到重启或者系 ...

  6. Ubuntu 16.04系统中利用CUDA安装更新NVIDIA显卡驱动程序的方法

    严正声明:本文系作者davidhopper原创,未经许可,不得转载. 在ThinkPad系列笔记本电脑中使用过Ubuntu 16.04系统的同学都知道,NVIDIA显卡驱动程序特别难安装.以我使用的T ...

  7. linux 系统上安装或自动更新安全补丁

    参考文档: https://linux.cn/article-8015-1.html?utm_source=weixin  centos和RHEL系统 https://linux.cn/article ...

  8. linux 已打开文件图标管理,Linux_没有启动图标利用Linux命令在终端打开文件,  在Linux系统中,打开一个 - phpStudy...

    没有启动图标利用Linux命令在终端打开文件 在Linux系统中,打开一个文件很简单,只要有启动图标就可以了,但是如果没有启动图标的话要如何在终端下打开文件呢?使用命令就能很好的解决这个问题,下面小编 ...

  9. [原创] 利用busybox, extlinux 在工控机CompactFlash(CF卡)上构建Linux系统(中)

    上篇:CF卡分区, extlinux的安装 中篇:构建根文件系统 下篇:2.6内核剪裁及Busybox编译配置及其分析 一个基本的文件系统应该包括: busybox (提供 shell 命令集) 设备 ...

最新文章

  1. AngularJS之Service(四)
  2. cannot和can not的区别 666666
  3. 语音识别-过零率和短时能量-端点检测
  4. hdu-2032杨辉三角
  5. PostGreSql工作笔记004---PostGreSql修改密码_windows和linux下修改
  6. oracle 存储过程给另一个用户的权限问题
  7. 网站smtp服务器,SMTP服务器
  8. Adobe PhotoShop(PS) for Windows 快捷键/PS快捷键
  9. android怎样开启root权限管理,【经验】安卓手机怎么开启Root权限?
  10. ppt如何替换其他mo ban_PPT如何做视觉化的数据图表?
  11. 求帮忙,给python中安装matplotlib系统里有但是显示不出来,万分感谢啊大家
  12. 有一个很好的PS滤镜,可以做出非常漂亮的抽丝效果,我一定要保存下来
  13. uniapp尺寸适配的一些记录
  14. 开关电源设计时如何减小地弹
  15. JVM - 直接内存
  16. 计算机专业qs国内大学,qs计算机专业大学排名
  17. CASS10.1.6免狗安装包下载教程
  18. 计算机毕业设计Java成都某4S店销售管理系统(源码+系统+mysql数据库+lw文档)
  19. 兰州理工大学计算机与通信学院挑战杯课外学术科技作品,我校开展第十三届“挑战杯”甘肃省大学生课外学术科技作品竞赛校级成果展览暨省级推荐作品路演活动...
  20. 达梦DEM企业管理器部署

热门文章

  1. 计算机本地无法连接失败怎么办,本地连接连不上怎么办?本地连接连不上解决方法...
  2. 手机html文档,手机文档html能删除吗
  3. Spring Cloud Stream与RabbitMQ 死信队列
  4. Python中使用xpath结合contains
  5. mysql桦仔_Microsoft SQL Server 2005技术内幕:T-SQL查询笔记
  6. python什么是入口文件_Python注释是什么东东
  7. mac ---- 安装ftp服务器
  8. linux脚本怎么退出while,linux中的while命令
  9. 用for循环打印出九九乘法表
  10. linux 下安装minio并配置