• 方法一  popen(可获取命令行执行后的输出结果)

转载自:

C++执行命令行指令并获取命令行执行后的输出结果

 1 /*
2 Execute command line commands and get specific results by comparison cTemplate
3 result storage in cResult
4
5 Example:
6
7 d:\SVN>svn info D:\SVN\ZVideoProcessor
8 Path: ZVideoProcessor
9 Working Copy Root Path: D:\SVN
10 URL: http://192.168.2.196/svn/Repos/ZVideoProcessor
11 Relative URL: ^/ZVideoProcessor
12 Repository Root: http://192.168.2.196/svn/Repos
13 Repository UUID: 43546b21-47e8-432e-acd4-bb9acb1f9fba
14 Revision: 1270
15 Node Kind: directory
16 Schedule: normal
17 Last Changed Author: sam.zhen
18 Last Changed Rev: 1268
19 Last Changed Date: 2018-11-01 20:29:28 +0800 (周四, 01 十一月 2018)
20
21 cmd: svn info D:\SVN\ZVideoProcessor
22 cTemplate: Revision:
23 cResult: 1270
24 */
25 int execmd(char* cmd,char* cResult,char* cTemplate)
26 {
27 int iTemplateSize=strlen(cTemplate);
28 char buffer[128];
29 FILE* pipe = _popen(cmd, "r");//open pipe ,execute cmd
30 if (!pipe)
31 {
32 cout<<"execute "<<cmd<<"error"<<endl;
33 return -1;
34 }
35
36 while(!feof(pipe))
37 {
38 if(fgets(buffer, 128, pipe))
39 {
40 //if cTemplate in buffer,then storage result in cResult
41 int res=strncmp(cTemplate,buffer,iTemplateSize);
42 if(res==0)
43 {
44 strncat(cResult,buffer+iTemplateSize,10);
45 int i=strlen(cResult);//because have '\n'
46 cResult[i-1]='\0';
47 break;
48 }
49 else
50 {
51 continue;
52 }
53 }
54 }
55
56 _pclose(pipe);//close pipe
57 return 0;
58 }
59
60 int main()
61 {
62 //get svn version
63 char cSvnVersionNum[10];
64 memset(cSvnVersionNum,0,sizeof(cSvnVersionNum));
65 execmd("svn info ../../../SVN",cSvnVersionNum,"Revision: ");
66   return 0;
67 }
  • 方法二 通过预处理方式

转载自:

c++代码中,使用svn版本号作为程序版本号的实现方法

1.编写版本模板文件svn_revision_template.h

1 #ifndef _SVN_REISION_H_
2 #define _SVN_REVISION_H_
3 #define AMG_LIB_VER_SVN_VERSION "$WCREV$"
4 #endif // !_SVN_REISION_H_

注意$WCREV$这里不能修改

2.新建版本文件svn_revision.h

1 #ifndef _SVN_REISION_H_
2 #define _SVN_REVISION_H_
3 #define AMG_LIB_VER_SVN_VERSION "1267"
4 #endif // !_SVN_REISION_H_

3.通过预先生成事件,添加下面的批处理命令

subwcrev.exe .\   .\svn_revision_template.h  .\svn_revision.h

注意第一个参数.\ 指需要获取哪个路径的svn号码

第二个参数.\svn_revision_template.h 指模板文件路径

第三个参数.\svn_revision.h 指修改后文件保存路径

4.代码中使用:直接使用.\svn_revision.h文件中的宏

AMG_LIB_VER_SVN_VERSION

如何获得svn的版本号信息?的更多相关文章

  1. SVN自动生成版本号信息

        在平时的多版本开发过程中,需要通过版本号来定位到源码版本,便于定位问题.常规工程实践是设置版本号为X.Y.Z.N,一般X表示主版本号,Y表示子版本号,我一般将Z设为0,N为本次提交的SVN版本 ...

  2. VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中

    在开发项目时,需要知道当前发布的到底是哪个版本,比较好的方式就是获取SVN的版本来作为项目的版本.项目版本一般由主版本.次版本.内部版本.修改版本四个部分组成,我们获取的SVN版本就作为修改版本即可. ...

  3. 隐藏nginx 版本号信息

    为了安全,想将http请求响应头里的nginx版本号信息隐藏掉: 1. nginx配置文件里增加 server_tokens off; server_tokens作用域是http server loc ...

  4. 网站程序版本号信息也可能造成bd快照严重滞后

    在a5上看到一篇“破解阿里云论坛的快照时间迷局 或涉足所有phpwind论坛”的文章,里面说到pw的一个版本信息导致了快照滞后的问题,这再次验证了之前那篇文章“时间戳造成快照滞后”的准确性. 如下图所 ...

  5. 隐藏nginx 版本号信息(转)

    为了安全,想将http请求响应头里的nginx版本号信息隐藏掉: 1. nginx配置文件里增加 server_tokens off; server_tokens作用域是http server loc ...

  6. 锤子Smartisan T1手机官方4.4.2系统内核版本号信息

    从锤子smartisan T1手机官方系统EGL中获取内核版本号信息(由cofface提供): I/Adreno-EGL(  816): <qeglDrvAPI_eglInitialize:41 ...

  7. VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#)

    原文:VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#) 在开发项目时,需要知道当前发布的到底是哪个版本,比较好的方式就是获取SVN的版本来作为项目的版本.项目版本一般由主版 ...

  8. 【转载】如何查看sqlserver客户端的版本号信息

    在sqlserver的使用过程中,有时候可能会因为sqlserver版本过低等原因的导致无法附加以及还原数据库,我们可以通过sql server management studio软件的帮助菜单参看到 ...

  9. Nginx优化之基本安全优化 (隐藏Nginx软件版本号信息,更改源码隐藏Nginx软件名及版本号,更改Nginx服务的默认用户)

    一,隐藏Nginx软件版本号信息 查看版本号 curl -I 192.168.0.220 HTTP/1.1 200 OK Server: nginx/1.6.2 #这里清晰的暴露了Web版本号(1.6 ...

随机推荐

  1. 如何使用蓝湖设计稿同时适配PC及移动端

    如何使用蓝湖设计稿同时适配PC及移动端 项目需求: 一套代码同时适配PC及移动端 方案: pc端采用px布局,移动端采用rem布局,通过媒体查询(media query)切换 坑: 尝试过使用post ...

  2. d3 zoom 抖动问题 事件

    最近在使用d3 zoom得时候   遇到一个小坑 直接对元素添加 zoom事件 会有很大得抖动,查文档 看代码之后发现是 由于元素在不断变化, 所以计算基础值也不不断变化,所以会导致计算出来得值 忽大 ...

  3. 一文读懂 SuperEdge 边缘容器架构与原理

    前言 superedge是腾讯推出的Kubernetes-native边缘计算管理框架.相比openyurt以及kubeedge,superedge除了具备Kubernetes零侵入以及边缘自治特性, ...

  4. 【C++】《C++ Primer 》第四章

    第四章 表达式 一.基础 重载运算符:当运算符作用在类类型的运算对象时,用户可以自行定义其含义. 左值和右值: C中:左值可以在表达式左边,右值不能. C++中:当一个对象被用作右值的时候,用的是对象 ...

  5. 【Linux】Linux介绍和安装 - 测试题

    第一部分测试题 Linux介绍和安装 测试题 做点练习题,巩固一下咯~ ~ _ 10 个选择题. 1.让我们选择开机时进哪个操作系统的软件叫什么? A. booter B. bootloader C. ...

  6. 【高级排序算法】1、归并排序法 - Merge Sort

    归并排序法 - Merge Sort 文章目录 归并排序法 - Merge Sort nlogn 比 n^2 快多少? 归并排序设计思想 时间.空间复杂度 归并排序图解 归并排序描述 归并排序小结 参 ...

  7. iostat的输出

    第一行显示的时子系统启动以来的平均值,接下来的报告显示了增量的平均值,每个设备一行 Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   ...

  8. 【Linux】CentOS7中yumbackend.py进程的结束方法

    环境: CentOS Linux release 7.3.1611 (Core) 今天启动这个不怎么用的机器,才启动,就发现后台的yum无法进行安装,持续报这个错误 Loaded plugins: f ...

  9. 【RAC】打完补丁后,发现只有一台rac可以启动,另一台无法启动

    安装11Gr2单机asm后,打完11.2.0.3.7的psu后,发现启动不起来数据库,alert日志内容如下: Errors in file /u01/app/oracle/diag/rdbms/bd ...

  10. poj-Decoding Morse Sequences(动态规划)

    Description Before the digital age, the most common "binary" code for radio communication ...