AutoVersionName:自动重命名编译生成的固件

2020-01-07 19:20发布

本帖最后由 tianxiaoMCU 于 2019-6-17 12:56 编辑

有时候会很频繁的发版本出来测试,特别是一套源码对应N个版本,每次编译后都得手动去改烧录文件的名字,还是很烦人的。明明在原文件里有定义了,还得手动再改一遍。就想着能自动化点,在源文件里改了,编译出来就直接发出去。

需要说明的是,这不是一个通用的脚本,因为是对我自己使用的版本命名方式去做的。如果各位觉得有用的话,可以在这个的基础上改。脚本可以到这里下载AutoVersionName

实现这个功能有两个文件要用到version.h、autoversionname.py。前者是版本(Semantic Versioning 2.0.0)名字管理文件,主要内容如下
  1. #define PRE_RELEASE     "release"
  2. #define BUILD           "1559717577"

  3. /* major minor patch */
  4. #define VERSION_CORE    "1.0.0"

  5. #if defined(VERSION_CORE)
  6. #if  defined(PRE_RELEASE) && defined(BUILD)
  7. #define SW_VESION VERSION_CORE"-"PRE_RELEASE"+"BUILD
  8. #elif defined(PRE_RELEASE)
  9. #define SW_VESION VERSION_CORE"-"PRE_RELEASE
  10. #elif defined(BUILD)
  11. #define SW_VESION VERSION_CORE"+"BUILD
  12. #else
  13. #define SW_VESION VERSION_CORE
复制代码

使用方法:
1、将version.h、autoversionname.py复制到工程目录下,并将version.h添加到工程里(我需要在程序运行的时候打印版本号);
2、在IDE里设置脚本执行命令,具体看图示:

1560747110(1).png (77.6 KB, 下载次数: 0) 下载附件 2019-6-17 12:52 上传

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

AutoVersionName.zip (50.86 KB, 下载次数: 10) 2019-6-17 12:55 上传 点击文件名下载附件

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。