- Копирование source/snag/version_.d в source/snag/version_.d.bak и каждый раз восстанавливается оригинальный файл при сборке через CMake - Добавлена параметризорванная возможность включения hash в версионирование по флагу GIT_HASH_VERSION
28 lines
1.2 KiB
CMake
28 lines
1.2 KiB
CMake
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})
|