Я провел небольшое исследование, основанное на ответах на мой вопрос. PlatformIO может запускать пользовательские сценарии перед компиляцией. Вот процесс создания номера сборки и включения его в код вашего проекта:
- Создайте скрипт 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)
- Добавить строку в platformio.ini :
extra_scripts = buildscript_versioning.py
Сборка вашего проекта запустит скрипт. Будет создано 2 файла:
Теперь вы можете добавить эту строку в код C:
#include <version.h>
Я запустил репозиторий gitlab с некоторой документацией здесь: https://gitlab.com/pvojnisek/buildnumber-for-platformio/tree/master
Другие идеи приветствуются!