45 lines
1.1 KiB
CMake
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
|
|
)
|