From 12ca36fbf1be2bf300fed48e6ba958b9ea827b30 Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Mon, 17 Feb 2025 16:52:34 +0900 Subject: [PATCH] Impl. setting version.h from CMake Previous implementation only updated the version if the CMakeLists.txt file was updated. This now auto-generates the version into version.h in every build. --- CMakeLists.txt | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a6ee81..ac9d78f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -68,20 +68,15 @@ set_source_files_properties(src/archiver.c COMPILE_FLAGS -Wno-format-nonliteral ) -if(EXISTS /usr/bin/git) - execute_process(COMMAND /usr/bin/git describe --long --tags - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - OUTPUT_VARIABLE SIMPLE_ARCHIVER_GIT_VER - ERROR_VARIABLE SIMPLE_ARCHIVER_GIT_VER_ERROR - OUTPUT_STRIP_TRAILING_WHITESPACE) - if (NOT SIMPLE_ARCHIVER_GIT_VER) - set(SIMPLE_ARCHIVER_GIT_VER "${SimpleArchiver_VERSION}") - endif() - message("Got version \"${SIMPLE_ARCHIVER_GIT_VER}\"") - set_source_files_properties(src/parser.c - PROPERTIES - COMPILE_FLAGS "-DSIMPLE_ARCHIVER_VERSION_STR=\\\"${SIMPLE_ARCHIVER_GIT_VER}\\\"" - ) +if(EXISTS /usr/bin/git AND EXISTS /usr/bin/sh AND EXISTS /usr/bin/cat AND EXISTS /usr/bin/xargs AND EXISTS /usr/bin/sed) + add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/version_string.txt" + COMMAND /usr/bin/sh ARGS -c "/usr/bin/git describe --long --tags >${CMAKE_CURRENT_BINARY_DIR}/version_string.txt" + COMMAND /usr/bin/sh ARGS -c "/usr/bin/cat ${CMAKE_CURRENT_BINARY_DIR}/version_string.txt | /usr/bin/xargs -Iderp sed -i \"/^#define SIMPLE_ARCHIVER_VERSION_STR /c #define SIMPLE_ARCHIVER_VERSION_STR \\\"derp\\\"\" ${CMAKE_CURRENT_SOURCE_DIR}/src/version.h" + COMMAND /usr/bin/rm ARGS -f "${CMAKE_CURRENT_BINARY_DIR}/version_string.txt" + VERBATIM) + add_custom_target(VersionStringCMD + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/version_string.txt") + add_dependencies(simplearchiver VersionStringCMD) else() message("Setting version \"${SimpleArchiver_VERSION}\"") set_source_files_properties(src/parser.c -- 2.49.0