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})