]> git.seodisparate.com - SimpleArchiver/commitdiff
Impl. setting version.h from CMake
authorStephen Seo <seo.disparate@gmail.com>
Mon, 17 Feb 2025 07:52:34 +0000 (16:52 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Mon, 17 Feb 2025 07:52:34 +0000 (16:52 +0900)
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

index 3a6ee817ee0e4602436830d5e17bf5c103c28c60..ac9d78f4f9e82468054e0933b302f007a0eca7b6 100644 (file)
@@ -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