53 lines
2.1 KiB
CMake
53 lines
2.1 KiB
CMake
|
||
# Variables for generating the version.
|
||
# Used in the application (config.h file and versioninfo.rc)
|
||
#
|
||
|
||
# Получаем полный временной штамп в UTC (пример: "2025-04-16 12:33:58 UTC")
|
||
string(TIMESTAMP BUILD_DATE "%Y-%m-%d %H:%M:%S UTC" UTC)
|
||
string(TIMESTAMP VERSION_DOY "%j" UTC) # день в году (001..366)
|
||
|
||
# Извлекаем компоненты даты и времени
|
||
string(SUBSTRING "${BUILD_DATE}" 0 4 YEAR_STR)
|
||
string(SUBSTRING "${BUILD_DATE}" 2 2 VERSION_YY)
|
||
string(SUBSTRING "${BUILD_DATE}" 5 2 VERSION_MM)
|
||
string(SUBSTRING "${BUILD_DATE}" 8 2 VERSION_DD)
|
||
string(SUBSTRING "${BUILD_DATE}" 11 2 VERSION_HH)
|
||
string(SUBSTRING "${BUILD_DATE}" 14 2 VERSION_MIN)
|
||
string(SUBSTRING "${BUILD_DATE}" 17 2 VERSION_SS)
|
||
|
||
# Убираем ведущие нули путём преобразования в числа
|
||
math(EXPR VERSION_YY_NOZERO "${VERSION_YY}")
|
||
math(EXPR VERSION_MM_NOZERO "${VERSION_MM}")
|
||
math(EXPR VERSION_DD_NOZERO "${VERSION_DD}")
|
||
math(EXPR VERSION_HH_NOZERO "${VERSION_HH}")
|
||
math(EXPR VERSION_MIN_NOZERO "${VERSION_MIN}")
|
||
math(EXPR VERSION_SS_NOZERO "${VERSION_SS}")
|
||
math(EXPR VERSION_DOY_NOZERO "${VERSION_DOY}")
|
||
|
||
if (VERSION_FULLDATE)
|
||
# Полная дата: YY.MM.DD.NNN
|
||
|
||
# Считаем количество минут с начала суток
|
||
math(EXPR VERSION_NNN
|
||
"${VERSION_HH_NOZERO} * 60 + ${VERSION_MIN_NOZERO}"
|
||
)
|
||
|
||
set(PROJECT_VERSION_MAJOR ${VERSION_YY_NOZERO})
|
||
set(PROJECT_VERSION_MINOR ${VERSION_MM_NOZERO})
|
||
set(PROJECT_VERSION_PATCH ${VERSION_DD_NOZERO})
|
||
set(BUILD_NUM ${VERSION_NNN})
|
||
|
||
else()
|
||
# Версия от MAJOR, MINOR + YY + день года
|
||
# MAJOR и MINOR должны быть заданы ранее через `project(... VERSION ...)`
|
||
|
||
set(PROJECT_VERSION_PATCH ${VERSION_YY_NOZERO})
|
||
set(BUILD_NUM ${VERSION_DOY_NOZERO})
|
||
endif()
|
||
|
||
set(ORIGINAL_FILE_NAME ${RUNTIME_OUTPUT_NAME})
|
||
|
||
message(STATUS "Project '${PROJECT_NAME}' version: ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}.${BUILD_NUM}")
|
||
|