使用PlatformIO自动增加内部版本号

vo

我有几个用于家庭自动化的微控制器项目。我的每个节点都有一个在代码中手动设置的版本号。在节点启动期间会报告此版本号,以通知我正在运行的代码。

有时,在代码中进行了一些更改后,忘记了更改版本号。因此,必须找到一种自动解决方案。

我对解决方案有一些想法:

  1. 创建文件(version.h):#define BUILDNO xxx
  2. 将其包含在相关的C代码中
  3. 每次构建前自动递增xxx

可以实施吗?还是有其他类似结果的解决方案?

vo

我根据问题的答案进行了一些研究。PlatformIO可以在编译之前运行自定义脚本。这是生成内部版本号并将其包含在您的项目代码中的过程:

  1. 在项目文件夹中创建一个Python脚本:buildscript_versioning.py
FILENAME_BUILDNO = 'versioning'
FILENAME_VERSION_H = 'include/version.h'
version = 'v0.1.'

import datetime

build_no = 0
try:
    with open(FILENAME_BUILDNO) as f:
        build_no = int(f.readline()) + 1
except:
    print('Starting build number from 1..')
    build_no = 1
with open(FILENAME_BUILDNO, 'w+') as f:
    f.write(str(build_no))
    print('Build number: {}'.format(build_no))

hf = """
#ifndef BUILD_NUMBER
  #define BUILD_NUMBER "{}"
#endif
#ifndef VERSION
  #define VERSION "{} - {}"
#endif
#ifndef VERSION_SHORT
  #define VERSION_SHORT "{}"
#endif
""".format(build_no, version+str(build_no), datetime.datetime.now(), version+str(build_no))
with open(FILENAME_VERSION_H, 'w+') as f:
    f.write(hf)
  1. platformio.ini中添加一行
    extra_scripts = 
        pre:buildscript_versioning.py

构建项目将运行脚本。将创建2个文件:

  • 版本控制:一个简单的文本文件,用于存储最后的内部版本号

  • include / version.h:要包含的头文件

现在,您可以将此行添加到您的C代码中:

#include <version.h>

我在这里启动了gitlab存储库,并提供了一些文档:https ://gitlab.com/pvojnisek/buildnumber-for-platformio/tree/master欢迎其他想法!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尝试自动增加内部版本号xCode(Unix脚本)

更好的增加内部版本号的方法?

在bash中增加内部版本号

IntelliJ IDEA-我可以自动增加内部版本号吗?

如何在Xcode 5中自动增加内部版本号

通过 vsts 部署到 appcenter 时,自动增加 appxbundle 包的内部版本号

在持续集成中增加Android内部版本号

无法增加文件中的内部版本号

如何自动增加MVC 6版本号?

如何通过使用脚本来增加float内部版本号

如何使用Azure DevOps为Xcode项目增加内部版本号

如何使用 Azure Pipelines 自动增加 Android 应用程序的构建 ID 和版本号

NuGet Packager 版本使用内部版本号,添加 -beta

如何在 Azure Pipelines 中自动递增 Xamarin Android 内部版本号和版本号?

使用内部版本号标记Docker文件

如何使用Maven获取Jenkins内部版本号

使用package.json中的内部版本号

如何在基于Maven的项目中让Netbeans增加.WAR的版本/内部版本号?

在App Store发布后,必须增加哪个iOS应用版本/内部版本号?

增加iOS应用程序版本和内部版本号?

Bash - 将版本号增加 1

python将版本号增加0.0.1

如何自动设置Watchkit应用目标的版本和内部版本号

如何在Appcelerator Titanium中增加iOS内部版本号

自动生成和自动增量内部版本号有什么区别?

如何从我的sbt自动增加版本号并上传到git

如何为 Azure Pipeline 中创建的 .msixupload 文件自动增加包版本号?

Xcode项目的“内部版本号”

AssemblyInfo内部版本号未更新