-
Notifications
You must be signed in to change notification settings - Fork 141
Expand file tree
/
Copy pathGitVersion.cmake
More file actions
35 lines (28 loc) · 1.13 KB
/
GitVersion.cmake
File metadata and controls
35 lines (28 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function(git_get_version VERSION_VARIABLE)
string(TIMESTAMP TODAY "%Y.%m.%d")
set(${VERSION_VARIABLE} "0.0.0+${TODAY}" PARENT_SCOPE)
find_program(GIT_EXECUTABLE git)
if(NOT GIT_EXECUTABLE)
message(WARNING "Git not found, using fallback version.")
return()
endif()
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --always --dirty
OUTPUT_VARIABLE VERSION_STRING
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
ERROR_VARIABLE GIT_DESCRIBE_ERROR
RESULT_VARIABLE GIT_DESCRIBE_RESULT
)
if(NOT GIT_DESCRIBE_RESULT EQUAL 0)
message(INFO "Error running 'git describe': ${GIT_DESCRIBE_ERROR}")
message(WARNING "Git failed, using fallback version.")
return()
endif()
string(LENGTH "${VERSION_STRING}" VERSION_STRING_LENGTH)
string(SUBSTRING "${VERSION_STRING}" 0 1 FIRST_CHARACTER)
if("${FIRST_CHARACTER}" STREQUAL "v")
string(SUBSTRING "${VERSION_STRING}" 1 ${VERSION_STRING_LENGTH} VERSION_STRING)
endif()
set(${VERSION_VARIABLE} ${VERSION_STRING} PARENT_SCOPE)
endfunction()