diff options
| author | Joseph Hunkeler <jhunkeler@gmail.com> | 2026-04-20 12:50:39 -0400 |
|---|---|---|
| committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2026-04-20 14:46:26 -0400 |
| commit | 0d4e19f733102dc6c2749faa71663bd5c1eba447 (patch) | |
| tree | 2da2855cffd12d78216133b0c8109ab672de2b5e /cmake/GitVersion.cmake | |
| parent | 0c6bcfb345075dc042b139bcdfbc11cd862c7258 (diff) | |
| download | stasis-0d4e19f733102dc6c2749faa71663bd5c1eba447.tar.gz | |
Generate version string based on repository information
Diffstat (limited to 'cmake/GitVersion.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 |
