Qt_Circular_Menu_Example/_cmake/version.cmake

53 lines
2.1 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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