MDK自动生成版本号
MDK编译工程时自动生成一个文件版本号,格式为 “V x.x.x Build 2021/01/13 11:08:41 by 计算机名”
我的操作希望对读到的小伙伴有帮助!
文件结构是这样的
\Test
|->.svn
|->MDK_proj
-----|->Test.uvprojx
-----|->GetVersionNumber
----------|->svnreion.bat
GetVersionNumber 文件夹是用于存储生成版本号及存储版本号文件的文件夹
svnreion.bat 用于生成版本号
在svnreion.bat的代码如下:
cd .\GetVersionNumber\
:: .\GetVersionNumber\ 这个路径是相对于 “*.uvprojx” 的路径
del svn_revision_template.h /s
del svn_revision.h /s
@echo off
set n=%computername%
echo #ifndef _SVN_REVISION_H_ > svn_revision_template.h
echo #define _SVN_REVISION_H_ >> svn_revision_template.h
::对应的大版本号 \r\n
echo //对应的大版本号 >> svn_revision_template.h
set Text7=#define FIRST_VERSION "1"
echo %Text7% >> svn_revision_template.h
::对应的软件版本号
echo //对应的软件版本号 >> svn_revision_template.h
set Text8=#define FIRMWARE_VERSION "0"
echo %Text8% >> svn_revision_template.h
::对应的SVN版本号
echo //对应的SVN版本号 >> svn_revision_template.h
set Text5=#define SVN_VERSION "$WCREV$"
echo %Text5% >> svn_revision_template.h
::根据规则生成的最终版本号
echo //根据规则生成的最终版本号 >> svn_revision_template.h
echo #define User_VERSION FIRST_VERSION"."FIRMWARE_VERSION"."SVN_VERSION >> svn_revision_template.h
echo #define AMG_LIB_VER_SVN_VERSION "V"User_VERSION" Build $WCNOW$ by %n%" >> svn_revision_template.h
echo #endif // !_SVN_REISION_H_ >> svn_revision_template.h
subwcrev.exe .\ .\svn_revision_template.h .\svn_revision.h
::pause
这*.bat文件主要是干了两件事
1, 生成了“svn_revision_template.h”文件。这个文件是有一个模板文件,
2, 调用“subwcrev.exe” 根据“svn_revision_template.h”模板文件生成“svn_revision.h”
也就是“subwcrev.exe .\ .\svn_revision_template.h .\svn_revision.h”这行命令。
在MDK的工程设置如下图:
这个的意思是在编译前,先运行这个*.bat文件。
运行后生成了有一个“svn_revision.h”文件内容如下:
#ifndef _SVN_REVISION_H_
#define _SVN_REVISION_H_
//对应的 大版本号
#define FIRST_VERSION "1"
//对应的软件版本号
#define FIRMWARE_VERSION "0"
//对应的SVN版本号
#define SVN_VERSION "1"
//根据规则生成的最终版本号
#define User_VERSION FIRST_VERSION"."FIRMWARE_VERSION"."SVN_VERSION
#define AMG_LIB_VER_SVN_VERSION "V"User_VERSION" Build 2021/01/13 12:37:12 by Freesoul"
#endif // !_SVN_REISION_H_
#宏定义 AMG_LIB_VER_SVN_VERSION 就是版本信息字符串。