脚本大放送:自动重命名编译生成的固件

开发过程中,有时候会很频繁的发版本出来做测试,每次编译后都得手动去改烧录文件的名字,还是很烦人的,明明在原文件里有定义了,还得手动再改一遍。就想着能自动化点,在源文件里改了,编译出来就能得到想要的,因此就有了这个脚本。

需要说明的是,这不是一个很通用的脚本,因为是对我自己使用的版本命名方式去做的。如果对自己有用的话,可以在我这个的基础上改,也就几行代码的事。脚本可以到我的github仓库上下载,在首页的“个人介绍”那点击蓝色小房子就可以跳转过去。

实现这个功能有两个文件要用到version.hautoversionname.py。前者是我自己的版本名字管理文件,主要内容如下

#define PRE_RELEASE     "release"
#define BUILD           "1559717577"

/* major minor patch */
#define VERSION_CORE    "1.0.0"

#if defined(VERSION_CORE)
#if  defined(PRE_RELEASE) && defined(BUILD)
#define SW_VESION VERSION_CORE"-"PRE_RELEASE"+"BUILD
#elif defined(PRE_RELEASE)
#define SW_VESION VERSION_CORE"-"PRE_RELEASE
#elif defined(BUILD)
#define SW_VESION VERSION_CORE"+"BUILD
#else
#define SW_VESION VERSION_CORE

这个版本格式是Semantic Versioning 2.0.0,有兴趣可以看看。下面说使用方法:
1、将version.hautoversionname.py复制到工程目录下,并将version.h添加到工程里(我需要在程序运行的时候打印版本号);
2、在IDE里设置脚本执行命令,具体看图示:

  • IAR


    15425410-948c5417ea906ea1.png
  • MDK


    15425410-16ea38708b174bf7.png

    图中的命令格式有几点要注意:

    • 1、python需要添加到系统环境变量里,否则会提示找不到;
    • 2、version.hautoversionname.py没用绝对路径是因为我将这两个文件放到了工程文件的同一目录下,如果不是放这里,需要使用绝对路径。

设置好后,在工程编译结束的时候就会执行这个脚本,脚本会解析version.h得到版本号,然后自动找到烧录文件并将它重命名。效果如下图:

15425410-db31e89e9f867353.png

To Do

根据Semantic Versioning 2.0.0,build metadata是动态生成的,一般是时间戳、烧录文件的哈希值啥的。目前没有去实现这一块,因为我暂时用不到。要做的话,需要再另外写一个脚本,在编译开始前去执行,生成需要的build metadata并写到version.h中的#define BUILD处。

转载于:https://www.jianshu.com/p/807bcc1f4a68

猜你喜欢

转载自blog.csdn.net/weixin_33842328/article/details/91208091