From 7f4918f1f17b0ddde6d1a8435e63f5f94c6dd065 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Mon, 20 Apr 2026 12:50:39 -0400 Subject: Generate version string based on repository information --- cmake/GitVersion.cmake | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 cmake/GitVersion.cmake (limited to 'cmake') diff --git a/cmake/GitVersion.cmake b/cmake/GitVersion.cmake new file mode 100644 index 0000000..7280510 --- /dev/null +++ b/cmake/GitVersion.cmake @@ -0,0 +1,43 @@ +function(get_version_from_git) + find_package(Git QUIET) + if(NOT Git_FOUND) + message(WARNING "Git not found. Setting fallback version.") + set(PROJECT_VERSION "0.0.0") + set(PROJECT_VERSION ${PROJECT_VERSION} PARENT_SCOPE) + set(PROJECT_VERSION_BRANCH "unknown") + set(PROJECT_VERSION_BRANCH ${PROJECT_VERSION_BRANCH} PARENT_SCOPE) + return() + endif() + + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --first-parent --long --dirty --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(WARNING "Failed to get git describe info") + return() + endif() + message(${GIT_TAG}) + + execute_process( + COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_BRANCH + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE GIT_RESULT + ) + if(NOT GIT_RESULT EQUAL 0) + message(WARNING "Failed to get git branch") + return() + endif() + message(${GIT_BRANCH}) + + string(REGEX REPLACE "^v" "" CLEAN_TAG "${GIT_TAG}") + set(PROJECT_VERSION ${CLEAN_TAG}) + set(PROJECT_VERSION ${CLEAN_TAG} PARENT_SCOPE) + set(PROJECT_VERSION_BRANCH ${GIT_BRANCH}) + set(PROJECT_VERSION_BRANCH ${GIT_BRANCH} PARENT_SCOPE) +endfunction() \ No newline at end of file -- cgit