-
Notifications
You must be signed in to change notification settings - Fork 69
/
versionExtraction.cmake
44 lines (40 loc) · 1.77 KB
/
versionExtraction.cmake
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
36
37
38
39
40
41
42
43
44
macro(get_commit_hash VARNAME)
execute_process(
COMMAND git log -1 --format=%h
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE ${VARNAME}
OUTPUT_STRIP_TRAILING_WHITESPACE)
endmacro()
macro(get_git_describe VARNAME)
execute_process(
COMMAND git describe --always --tags --first-parent
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE ${VARNAME}
OUTPUT_STRIP_TRAILING_WHITESPACE)
endmacro()
macro(get_git_date VARNAME)
execute_process(
COMMAND git log -1 --format=%ai
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE ${VARNAME}
OUTPUT_STRIP_TRAILING_WHITESPACE)
endmacro()
macro(extractVCSInformation COMMIT_VARNAME DESCRIBE_VARNAME COMMIT_DATE_VARNAME)
get_commit_hash(${COMMIT_VARNAME})
get_git_describe(${DESCRIBE_VARNAME})
get_git_date(${COMMIT_DATE_VARNAME})
if("${${COMMIT_VARNAME}}" STREQUAL "")
#If I don't have information I try to get it from the version.info file next to the sources (if one)
message(STATUS "I couldn't get version information from git, using the version.info next to the sources")
file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/version.info FILECONTENT LIMIT_COUNT 3)
list(GET FILECONTENT 0 ${COMMIT_VARNAME})
list(GET FILECONTENT 1 ${DESCRIBE_VARNAME})
list(GET FILECONTENT 2 ${COMMIT_DATE_VARNAME})
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/version.info DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
else()
#If I have information for the Commit ID, I store it in the version.info file
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/version.info ${${COMMIT_VARNAME}}\n)
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/version.info ${${DESCRIBE_VARNAME}}\n)
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/version.info ${${COMMIT_DATE_VARNAME}})
endif()
endmacro()