diff options
Diffstat (limited to 'cmake/GitVersion.cmake')
| -rw-r--r-- | cmake/GitVersion.cmake | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/cmake/GitVersion.cmake b/cmake/GitVersion.cmake new file mode 100644 index 000000000..7044aaffc --- /dev/null +++ b/cmake/GitVersion.cmake @@ -0,0 +1,50 @@ +find_package(Git) + +# Extract a version from the latest tag matching something like v1.2.3.4 +function(get_git_version var dir) + if(NOT DEFINED ${var}) + set(version "0.0") + if(GIT_EXECUTABLE) + set(command + "${GIT_EXECUTABLE}" + -C + "${dir}" + describe + --abbrev=0 + --tags + --match + v* + ) + execute_process( + COMMAND ${command} + RESULT_VARIABLE result + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE version + ) + if(NOT result EQUAL 0) + message( + WARNING + "Getting ${var} failed: ${command} returned ${result}" + ) + elseif("${version}" MATCHES "^v([0-9]+(\.[0-9]+)*).*") + set(version "${CMAKE_MATCH_1}") + else() + message( + WARNING + "Couldn't parse numeric version (like v1.2.3) from ${version}" + ) + endif() + else() + message( + WARNING + "Couldn't find git executable to get ${var}, please use -D${var}" + ) + endif() + endif() + + set(${var} + ${version} + CACHE STRING + "The project version, detected using git if available" + ) +endfunction() |
