Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

67 righe
1.8 KiB

  1. Function ( GitGetVersion GIT_ROOT OUT_MAJOR OUT_MINOR OUT_PATCH OUT_BUILD OUT_HASH )
  2. If ( NOT EXISTS "${GIT_ROOT}/.git" )
  3. Return ( )
  4. EndIf ( )
  5. Message ( "" )
  6. # Execute process to get git revisions
  7. Execute_Process ( COMMAND
  8. bash -c "git -C ${GIT_ROOT} show-ref --tags | egrep 'refs\/tags\/v?[0-9]+\.[0-9]+(\.[0-9]+(\.[0-9]+))' | head -1"
  9. RESULT_VARIABLE
  10. GIT_RET
  11. OUTPUT_VARIABLE
  12. GIT_REV
  13. ERROR_VARIABLE
  14. GIT_ERR )
  15. If ( NOT ${GIT_RET} EQUAL 0 )
  16. Message ( FATAL_ERROR "Unable to get git revisions! ${GIT_RET}" )
  17. EndIf ( )
  18. If ( "${GIT_REV}" STREQUAL "" )
  19. Return ()
  20. EndIf ()
  21. # Split the git revision string
  22. String ( REPLACE " " ";" SPLIT ${GIT_REV} )
  23. List ( LENGTH SPLIT COUNT )
  24. If ( NOT ${COUNT} EQUAL 2 )
  25. Return ( )
  26. EndIf ( )
  27. List ( GET SPLIT 0 HASH )
  28. List ( GET SPLIT 1 VERSION )
  29. # Split the version
  30. String ( STRIP "${VERSION}" SPLIT )
  31. String ( REGEX REPLACE "refs?\/tags?\/v?" "" SPLIT ${SPLIT} )
  32. String ( REPLACE "." ";" SPLIT ${SPLIT} )
  33. List ( LENGTH SPLIT COUNT )
  34. If ( ${COUNT} LESS 2 )
  35. Message ( FATAL_ERROR "Unable to parse version string!" )
  36. EndIf ( )
  37. # major
  38. List ( GET SPLIT 0 TMP )
  39. Set ( ${OUT_MAJOR} ${TMP} PARENT_SCOPE )
  40. # minor
  41. List ( GET SPLIT 1 TMP )
  42. Set ( ${OUT_MINOR} ${TMP} PARENT_SCOPE )
  43. # patch
  44. If ( ${COUNT} GREATER 2 )
  45. List ( GET SPLIT 2 TMP )
  46. Set ( ${OUT_PATCH} ${TMP} PARENT_SCOPE )
  47. EndIf ( )
  48. # build
  49. If ( ${COUNT} GREATER 3 )
  50. List ( GET SPLIT 3 TMP )
  51. Set ( ${OUT_BUILD} ${TMP} PARENT_SCOPE )
  52. EndIf ( )
  53. # hash
  54. Set ( ${OUT_HASH} ${HASH} PARENT_SCOPE )
  55. EndFunction ( )