Files
jlv135_cli/cmake/version.cmake
2025-11-24 13:47:23 +03:00

45 lines
1.1 KiB
CMake

# Скрипт для генерации версии на основе git
# Получаем ближайший тег
execute_process(
COMMAND git describe --tags --abbrev=0
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE GIT_TAG
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT GIT_TAG)
set(GIT_TAG "none")
endif()
# Получаем текущую ветку
execute_process(
COMMAND git branch --show-current
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Получаем короткий хеш коммита
execute_process(
COMMAND git show -s --format=%h
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE GIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Формируем строку версии
if(GIT_BRANCH STREQUAL "main")
set(VERSION_STRING "${GIT_TAG} ${GIT_HASH}")
else()
set(VERSION_STRING "${GIT_TAG}-${GIT_BRANCH} ${GIT_HASH}")
endif()
# Генерируем заголовочный файл
configure_file(
${SOURCE_DIR}/inc/jlv135_cli/version.h.in
${BINARY_DIR}/inc/jlv135_cli/version.h
@ONLY
)