Автоматизирован процесс получения версии программы из исходнго файла при сборке в пакет:

- Копирование source/snag/version_.d в source/snag/version_.d.bak и каждый раз восстанавливается оригинальный файл при сборке через CMake
- Добавлена параметризорванная возможность включения hash в версионирование по флагу GIT_HASH_VERSION
This commit is contained in:
Alexander Zhirov 2025-06-02 11:08:50 +03:00
parent 4474cc5b7c
commit d58ab81fd8
Signed by: alexander
GPG key ID: C8D8BE544A27C511
6 changed files with 53 additions and 32 deletions

28
cmake/snag_version.cmake Normal file
View file

@ -0,0 +1,28 @@
cmake_minimum_required (VERSION 3.6)
# Сохраняем копию файла с версией программы и каждый раз обновляем при конфигуре через Cmake
if(EXISTS "${CMAKE_SOURCE_DIR}/source/snag/version_.d.bak")
configure_file(
"${CMAKE_SOURCE_DIR}/source/snag/version_.d.bak"
"${CMAKE_SOURCE_DIR}/source/snag/version_.d"
COPYONLY
)
else()
configure_file(
"${CMAKE_SOURCE_DIR}/source/snag/version_.d"
"${CMAKE_SOURCE_DIR}/source/snag/version_.d.bak"
COPYONLY
)
endif()
# Чтение файла version_.d
file(READ "${CMAKE_SOURCE_DIR}/source/snag/version_.d" VERSION_FILE_CONTENT)
# Извлечение строки версии (например, "0.1.0-alpha.1")
string(REGEX MATCH "snagVersion = \"([0-9]+)\\.([0-9]+)\\.([0-9]+)([^\"]*)\"" _ ${VERSION_FILE_CONTENT})
# Установка переменных для мажорной, минорной, патч-версии и суффикса
set(PROJECT_VERSION_MAJOR ${CMAKE_MATCH_1})
set(PROJECT_VERSION_MINOR ${CMAKE_MATCH_2})
set(PROJECT_VERSION_PATCH ${CMAKE_MATCH_3})
set(PROJECT_VERSION_SUFFIX ${CMAKE_MATCH_4})