GetGitVersion.cmake 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # - Returns a version string from Git tags
  2. #
  3. # This function inspects the annotated git tags for the project and returns a string
  4. # into a CMake variable
  5. # higly adapted from https://raw.githubusercontent.com/google/benchmark/master/cmake/GetGitVersion.cmake
  6. # lighta
  7. #
  8. # get_git_version()
  9. #
  10. # - Example
  11. #
  12. # include(GetGitVersion)
  13. # get_git_version(GIT_VERSION)
  14. # return
  15. # - GIT_VERSION : remote tracking sha of master
  16. # - GIT_HEAD_VERSION : current sha of current branch
  17. #
  18. # Requires CMake 2.8.11+
  19. find_package(Git)
  20. if(__get_git_version)
  21. return()
  22. endif()
  23. set(__get_git_version INCLUDED)
  24. function(get_git_version)
  25. if(GIT_EXECUTABLE)
  26. #determine remote tracking master sha
  27. execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse origin/master
  28. RESULT_VARIABLE status
  29. OUTPUT_VARIABLE GIT_VERSION
  30. ERROR_QUIET)
  31. if(${status})
  32. set(GIT_VERSION "unknow")
  33. else()
  34. string(STRIP ${GIT_VERSION} GIT_VERSION)
  35. endif()
  36. #determine current head sha
  37. execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --verify HEAD
  38. RESULT_VARIABLE status
  39. OUTPUT_VARIABLE GIT_HEAD_VERSION
  40. ERROR_QUIET)
  41. if(${status})
  42. set(GIT_HEAD_VERSION "unknow")
  43. else()
  44. string(STRIP ${GIT_HEAD_VERSION} GIT_HEAD_VERSION)
  45. endif()
  46. endif()
  47. message("-- git Version: ${GIT_VERSION}, ${GIT_HEAD_VERSION}")
  48. set(GIT_VERSION ${GIT_VERSION} PARENT_SCOPE)
  49. set(GIT_HEAD_VERSION ${GIT_HEAD_VERSION} PARENT_SCOPE)
  50. endfunction()