Автоматизирован процесс получения версии программы из исходнго файла при сборке в пакет:
- Копирование source/snag/version_.d в source/snag/version_.d.bak и каждый раз восстанавливается оригинальный файл при сборке через CMake - Добавлена параметризорванная возможность включения hash в версионирование по флагу GIT_HASH_VERSION
This commit is contained in:
parent
4474cc5b7c
commit
d58ab81fd8
6 changed files with 53 additions and 32 deletions
28
cmake/snag_version.cmake
Normal file
28
cmake/snag_version.cmake
Normal 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})
|
Loading…
Add table
Add a link
Reference in a new issue