美文网首页
脚本大放送:自动重命名编译生成的固件

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

作者: tianxiaoMCU | 来源:发表于2019-06-06 13:09 被阅读0次

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

    需要说明的是,这不是一个很通用的脚本,因为是对我自己使用的版本命名方式去做的。如果对自己有用的话,可以在我这个的基础上改,也就几行代码的事。脚本可以到我的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


    • MDK



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

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

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

    To Do

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/iwljxctx.html