diff options
| author | Joseph Hunkeler <jhunkeler@gmail.com> | 2026-04-20 12:50:39 -0400 |
|---|---|---|
| committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2026-04-21 12:22:04 -0400 |
| commit | 7f4918f1f17b0ddde6d1a8435e63f5f94c6dd065 (patch) | |
| tree | 2981bfd281eaeb91e631fe037767decd72a85aab /cmake | |
| parent | e05702d1818088439fd017786a036103062db358 (diff) | |
| download | stasis-7f4918f1f17b0ddde6d1a8435e63f5f94c6dd065.tar.gz | |
Generate version string based on repository information
Diffstat (limited to 'cmake')
| -rw-r--r-- | cmake/GitVersion.cmake | 43 |
1 files changed, 43 insertions, 0 deletions
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 |
