From 379342c0868d42bbeb4f03b8d5f908f22944db2c Mon Sep 17 00:00:00 2001 From: Carl Philipp Klemm Date: Thu, 18 Sep 2025 13:06:47 +0200 Subject: [PATCH] Add missing cmake file --- cmake/GitVersion.cmake | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 cmake/GitVersion.cmake diff --git a/cmake/GitVersion.cmake b/cmake/GitVersion.cmake new file mode 100644 index 0000000..7913c7e --- /dev/null +++ b/cmake/GitVersion.cmake @@ -0,0 +1,38 @@ +function(get_version_from_git) + find_package(Git REQUIRED) + + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --tags --always + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_TAG + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE GIT_RESULT + ) + + if(NOT GIT_RESULT EQUAL 0) + message(FATAL_ERROR "Failed to get git tag") + endif() + + execute_process( + COMMAND ${GIT_EXECUTABLE} rev-parse --short=7 HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_COMMIT_SHORT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + string(REGEX REPLACE "^v" "" CLEAN_TAG "${GIT_TAG}") + if(CLEAN_TAG MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)(-.*)?$") + + set(CMAKE_PROJECT_VERSION_MAJOR ${CMAKE_MATCH_1}) + set(CMAKE_PROJECT_VERSION_MAJOR ${CMAKE_MATCH_1} PARENT_SCOPE) + set(CMAKE_PROJECT_VERSION_MINOR ${CMAKE_MATCH_2}) + set(CMAKE_PROJECT_VERSION_MINOR ${CMAKE_MATCH_2} PARENT_SCOPE) + set(CMAKE_PROJECT_VERSION_PATCH ${CMAKE_MATCH_3}) + set(CMAKE_PROJECT_VERSION_PATCH ${CMAKE_MATCH_3} PARENT_SCOPE) + + set(PROJECT_VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}") + set(PROJECT_VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}" PARENT_SCOPE) + else() + message(FATAL_ERROR "Tag '${CLEAN_TAG}' does not match semver format") + endif() +endfunction()