Last active
January 20, 2018 20:09
-
-
Save lighta/612498d70eea3c6a9bc672041bfffcd5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# - Returns a version string from Git tags | |
# | |
# This function inspects the annotated git tags for the project and returns a string | |
# into a CMake variable | |
# higly adapted from https://raw.githubusercontent.com/google/benchmark/master/cmake/GetGitVersion.cmake | |
# lighta | |
# | |
# get_git_version() | |
# | |
# - Example | |
# | |
# include(GetGitVersion) | |
# get_git_version(GIT_VERSION) | |
# return | |
# - GIT_VERSION : remote tracking sha of master | |
# - GIT_HEAD_VERSION : current sha of current branch | |
# | |
# Requires CMake 2.8.11+ | |
find_package(Git) | |
if(__get_git_version) | |
return() | |
endif() | |
set(__get_git_version INCLUDED) | |
function(get_git_version) | |
if(GIT_EXECUTABLE) | |
#determine remote tracking master sha | |
set (git_cmd "${GIT_EXECUTABLE}") #fix space in path issue | |
file(TO_NATIVE_PATH ${PROJECT_SOURCE_DIR} NATIVE_PROJECT_SOURCE_DIR) | |
file(TO_CMAKE_PATH ${PROJECT_SOURCE_DIR} CMAKE_PROJECT_SOURCE_DIR) | |
message( STATUS "Git Determining remote tracking master sha, PROJECT_SOURCE_DIR =${PROJECT_SOURCE_DIR},${NATIVE_PROJECT_SOURCE_DIR}") | |
execute_process(COMMAND ${git_cmd} rev-parse origin/master | |
WORKING_DIRECTORY ${CMAKE_PROJECT_SOURCE_DIR} | |
RESULT_VARIABLE status | |
OUTPUT_VARIABLE GIT_VERSION) | |
if(${status}) | |
message( STATUS "status=${status}") | |
set(GIT_VERSION "unknow GIT_VERSION=${GIT_VERSION}") | |
else() | |
message( STATUS "GIT_VERSION=${GIT_VERSION} status=${status}") | |
string(STRIP ${GIT_VERSION} GIT_VERSION) | |
endif() | |
#determine current head sha | |
message( STATUS "Git Determining current head sha") | |
execute_process(COMMAND ${git_cmd} rev-parse --verify HEAD | |
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} | |
RESULT_VARIABLE status | |
OUTPUT_VARIABLE GIT_HEAD_VERSION | |
) | |
if(${status}) | |
message( STATUS "status=${status}") | |
set(GIT_HEAD_VERSION "unknow GIT_HEAD_VERSION=${GIT_HEAD_VERSION}") | |
else() | |
message( STATUS "GIT_HEAD_VERSION=${GIT_HEAD_VERSION} status=${status}") | |
string(STRIP ${GIT_HEAD_VERSION} GIT_HEAD_VERSION) | |
endif() | |
endif() | |
message("-- git Version: ${GIT_VERSION}, ${GIT_HEAD_VERSION}") | |
set(GIT_VERSION ${GIT_VERSION} PARENT_SCOPE) | |
set(GIT_HEAD_VERSION ${GIT_HEAD_VERSION} PARENT_SCOPE) | |
endfunction() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment