让IAR生成SVN版本号

对于源码SVN受控的项目,很希望SVN版本号作为软件版本的一部分,在Linux使用shell脚本很容易搞定这个事情,但在windows下的嵌入式项目就么有那么容易。最近在IAR中成功使用pre-build功能搞定了这个事情,具体见如下的步骤:

1. 首先保证你的svn客户端支持控制台命令,我使用的是tortoiseSVN,在安装时注意勾选tortoiseSVN的命令行支持;

2. 编写一个windows脚本ProduceVersion.bat放到IAR的工程目录下(也即和*.eww同一个目录),该脚本的内容如下:

echo // This file is automatically generated or updated^, please don't edit it. > %1\SVNVersion.h
echo #pragma once >> %1\SVNVersion.h
echo #define SVN_VERSION \>> %1\SVNVersion.h
svnversion %1^" >> %1\SVNVersion.h
exit

3. 在IAR的Proj->Options->Build Actions->Pre-Build command line中写入:cmd /c start $PROJ_DIR$\ProduceVersion.bat $PROJ_DIR$

4. 在编译的时候IAR就会先调用ProduceVersion.bat,它将生成一个SVNVersion.h的文件,该文件的内容为:

// This file is automatically generated or updated, please don't edit it. 
#pragma once 
#define SVN_VERSION \
171M

5. 在程序中我们就可以包含SVNVersion.h这个文件,并且使用SVN_VERSION这个宏了。细心的你应该发现问题了吧,SVN_VERSION定义成了171M,171M既不是又不是字符串也不是整数,那么问题来了,如何使用这个结果?关键的来了!见下面的代码片段:

#define __MY_STR(V) ""#V""
#define MY_STR(V) __MY_STR(V)
static const char svnVersion[] = {MY_STR(SVN_VERSION)};
这样你就可以在你的代码中使用svnVersion这个数组了。


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值