我有几个用于家庭自动化的微控制器项目。我的每个节点都有一个在代码中手动设置的版本号。在节点启动期间会报告此版本号,以通知我正在运行的代码。
有时,在代码中进行了一些更改后,忘记了更改版本号。因此,必须找到一种自动解决方案。
我对解决方案有一些想法:
可以实施吗?还是有其他类似结果的解决方案?
我根据问题的答案进行了一些研究。PlatformIO可以在编译之前运行自定义脚本。这是生成内部版本号并将其包含在您的项目代码中的过程:
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)
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] 删除。
我来说两句