Add version
This commit is contained in:
@@ -17,6 +17,51 @@ else()
|
|||||||
add_compile_definitions(JL_CONFIG_USE_FILE)
|
add_compile_definitions(JL_CONFIG_USE_FILE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Генерация версии из git
|
||||||
|
execute_process(
|
||||||
|
COMMAND git describe --tags --abbrev=0
|
||||||
|
WORKING_DIRECTORY ${CMAKE_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 ${CMAKE_SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE GIT_BRANCH
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
)
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND git show -s --format=%h
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE GIT_HASH
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
)
|
||||||
|
|
||||||
|
# Получаем дату и время сборки
|
||||||
|
string(TIMESTAMP BUILD_DATE "%Y-%m-%d %H:%M:%S" UTC)
|
||||||
|
|
||||||
|
# Формируем короткую версию (без хеша и даты)
|
||||||
|
if(GIT_BRANCH STREQUAL "main")
|
||||||
|
set(VERSION_SHORT "${GIT_TAG}")
|
||||||
|
set(VERSION_STRING "${GIT_TAG} ${GIT_HASH} (${BUILD_DATE})")
|
||||||
|
else()
|
||||||
|
set(VERSION_SHORT "${GIT_TAG}-${GIT_BRANCH}")
|
||||||
|
set(VERSION_STRING "${GIT_TAG}-${GIT_BRANCH} ${GIT_HASH} (${BUILD_DATE})")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
${CMAKE_SOURCE_DIR}/inc/jlv135_cli/version.h.in
|
||||||
|
${CMAKE_BINARY_DIR}/inc/jlv135_cli/version.h
|
||||||
|
@ONLY
|
||||||
|
)
|
||||||
|
|
||||||
# Создание исполняемого файла
|
# Создание исполняемого файла
|
||||||
add_executable(${PROJECT_NAME}
|
add_executable(${PROJECT_NAME}
|
||||||
src/jl_modbus/jl_modbus_config.c
|
src/jl_modbus/jl_modbus_config.c
|
||||||
@@ -36,8 +81,9 @@ add_executable(${PROJECT_NAME}
|
|||||||
target_link_libraries(${CMAKE_PROJECT_NAME} pthread)
|
target_link_libraries(${CMAKE_PROJECT_NAME} pthread)
|
||||||
|
|
||||||
# Добавление каталогов для поиска заголовков
|
# Добавление каталогов для поиска заголовков
|
||||||
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
|
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
|
||||||
inc)
|
inc
|
||||||
|
${CMAKE_BINARY_DIR}/inc)
|
||||||
|
|
||||||
if (BUILD_FOR_JLV135)
|
if (BUILD_FOR_JLV135)
|
||||||
# Опция strip
|
# Опция strip
|
||||||
|
|||||||
44
cmake/version.cmake
Normal file
44
cmake/version.cmake
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
# Скрипт для генерации версии на основе 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
|
||||||
|
)
|
||||||
7
inc/jlv135_cli/version.h.in
Normal file
7
inc/jlv135_cli/version.h.in
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#ifndef JLV135_VERSION_H
|
||||||
|
#define JLV135_VERSION_H
|
||||||
|
|
||||||
|
#define JLV135_VERSION "@VERSION_STRING@"
|
||||||
|
#define JLV135_VERSION_SHORT "@VERSION_SHORT@"
|
||||||
|
|
||||||
|
#endif // JLV135_VERSION_H
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
#include <jlv135_cli/jl_block.h>
|
#include <jlv135_cli/jl_block.h>
|
||||||
|
#include <jlv135_cli/version.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@@ -12,7 +13,9 @@ print_help(const char *program_name)
|
|||||||
printf("Usage: %s [COMMAND] [BLOCK] [PARAMETERS...]\n\n", program_name);
|
printf("Usage: %s [COMMAND] [BLOCK] [PARAMETERS...]\n\n", program_name);
|
||||||
printf("Commands:\n");
|
printf("Commands:\n");
|
||||||
printf(" get <block> Display all parameters of the specified block\n");
|
printf(" get <block> Display all parameters of the specified block\n");
|
||||||
printf(" set <block> ... Modify parameters of the specified block\n\n");
|
printf(" set <block> ... Modify parameters of the specified block\n");
|
||||||
|
printf(" version Display full version information\n");
|
||||||
|
printf(" ver Display short version\n\n");
|
||||||
printf("Available blocks:\n");
|
printf("Available blocks:\n");
|
||||||
|
|
||||||
const jl_block_t *block = jl_block_get_all();
|
const jl_block_t *block = jl_block_get_all();
|
||||||
@@ -84,6 +87,18 @@ main(int argc, const char *argv[])
|
|||||||
// Передаем оставшиеся аргументы в метод set блока
|
// Передаем оставшиеся аргументы в метод set блока
|
||||||
return block->set(argc - 3, &argv[3]);
|
return block->set(argc - 3, &argv[3]);
|
||||||
}
|
}
|
||||||
|
// Команда version
|
||||||
|
else if (strcmp(command, "version") == 0)
|
||||||
|
{
|
||||||
|
printf("jlv135_cli version %s\n", JLV135_VERSION);
|
||||||
|
return JLV135_CLI_OK;
|
||||||
|
}
|
||||||
|
// Команда ver (короткая версия)
|
||||||
|
else if (strcmp(command, "ver") == 0)
|
||||||
|
{
|
||||||
|
printf("%s\n", JLV135_VERSION_SHORT);
|
||||||
|
return JLV135_CLI_OK;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Error: unknown command '%s'\n", command);
|
fprintf(stderr, "Error: unknown command '%s'\n", command);
|
||||||
|
|||||||
Reference in New Issue
Block a user