diff --git a/scripts/cmake/ProjectSetup.cmake b/scripts/cmake/ProjectSetup.cmake
index 71d7c33cbab7d31ebba2b7e94b42f9fb4a809f46..f07853177d6fd6a6b0daf0e58b9d9625088bc6a3 100644
--- a/scripts/cmake/ProjectSetup.cmake
+++ b/scripts/cmake/ProjectSetup.cmake
@@ -28,26 +28,52 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR})
 
 set(CMAKE_MACOSX_RPATH 1)
 
-include(GetGitRevisionDescription)
-GET_GIT_HEAD_REVISION(GIT_REFSPEC GIT_SHA1)
-string(SUBSTRING ${GIT_SHA1} 0 8 GIT_SHA1_SHORT)
+# Get version info from Git, implementation based on
+# https://github.com/tomtom-international/cpp-dependencies
+execute_process(
+    COMMAND ${GIT_EXECUTABLE} describe --tags --long --dirty --always
+    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+    RESULT_VARIABLE DESCRIBE_RESULT
+    OUTPUT_VARIABLE DESCRIBE_STDOUT
+)
+if(DESCRIBE_RESULT EQUAL 0)
+    string(STRIP "${DESCRIBE_STDOUT}" DESCRIBE_STDOUT)
+    message(STATUS "Git reported this project's version as '${DESCRIBE_STDOUT}'")
+    if(DESCRIBE_STDOUT MATCHES "^(.*)-(dirty)$")
+      set(DESCRIBE_DIRTY "${CMAKE_MATCH_2}")
+      set(DESCRIBE_STDOUT "${CMAKE_MATCH_1}")
+    endif()
+    if(DESCRIBE_STDOUT MATCHES "^([0-9a-f]+)$")
+      set(DESCRIBE_COMMIT_NAME "${CMAKE_MATCH_1}")
+      set(DESCRIBE_STDOUT "")
+    elseif(DESCRIBE_STDOUT MATCHES "^(.*)-g([0-9a-f]+)$")
+      set(DESCRIBE_COMMIT_NAME "g${CMAKE_MATCH_2}")
+      set(DESCRIBE_STDOUT "${CMAKE_MATCH_1}")
+    endif()
+    if(DESCRIBE_STDOUT MATCHES "^(.*)-([0-9]+)$")
+      set(DESCRIBE_COMMIT_COUNT "${CMAKE_MATCH_2}")
+      set(DESCRIBE_TAG "${CMAKE_MATCH_1}")
+      set(DESCRIBE_STDOUT "")
+    endif()
+    if("${DESCRIBE_TAG}.0.0" MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+).*$")
+      set(CPACK_PACKAGE_VERSION_MAJOR "${CMAKE_MATCH_1}")
+      set(CPACK_PACKAGE_VERSION_MINOR "${CMAKE_MATCH_2}")
+      set(CPACK_PACKAGE_VERSION_PATCH "${CMAKE_MATCH_3}")
+    endif()
 
-if(IS_SUBPROJECT)
-    set(OGS_VERSION x.x.x)
-else()
-    GIT_GET_TAG(GIT_DESCRIBE)
-    if(GIT_DESCRIBE)
-        string(REGEX MATCH ^[0-9|\\.]+ GIT_TAG ${GIT_DESCRIBE})
-        set(OGS_VERSION ${GIT_DESCRIBE})
-
-        if(GIT_DESCRIBE MATCHES ".*-.*-.*")
-            # Commit is not a tag
-            string(REGEX MATCH "-([0-9]+)-" GIT_COMMITS_AFTER_TAG ${GIT_DESCRIBE})
-        else()
-            set(OGS_VERSION ${GIT_TAG})
-        endif()
-        message(STATUS "OGS version: ${OGS_VERSION}")
-    else()
-        message(WARNING "Git repository contains no tags! Please run: git fetch --tags")
+    set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
+    if(DESCRIBE_COMMIT_COUNT GREATER 0)
+      set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}-${DESCRIBE_COMMIT_COUNT}")
     endif()
+
+    set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}-${DESCRIBE_COMMIT_NAME}")
+
+    if(DESCRIBE_DIRTY)
+      string(TIMESTAMP DESCRIBE_DIRTY_TIMESTAMP "%Y%m%d%H%M%S" UTC)
+      set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}.dirty.${DESCRIBE_DIRTY_TIMESTAMP}")
+    endif()
+    set(OGS_VERSION ${CPACK_PACKAGE_VERSION})
+    message(STATUS "OGS VERSION: ${CPACK_PACKAGE_VERSION}")
+else()
+    message(WARNING "Git repository contains no tags! Please run: git fetch --tags")
 endif()