diff --git a/scripts/cmake/SubmoduleSetup.cmake b/scripts/cmake/SubmoduleSetup.cmake
index 5dbf45035c16a6d655a6cdb3353f6a9c9feb98f9..9d753a147080afe483c84c96809e0b4da7cf78f1 100644
--- a/scripts/cmake/SubmoduleSetup.cmake
+++ b/scripts/cmake/SubmoduleSetup.cmake
@@ -42,6 +42,7 @@ foreach(SUBMODULE ${REQUIRED_SUBMODULES})
     string(REGEX MATCH "^\\-" UNINITIALIZED ${SUBMODULE_STATE})
     string(REGEX MATCH "^\\+" MISMATCH ${SUBMODULE_STATE})
 
+    set(RESULT "")
     if(UNINITIALIZED)
         message(STATUS "Initializing submodule ${SUBMODULE}")
         if(${SUBMODULE} STREQUAL "Tests/Data")
@@ -50,6 +51,7 @@ foreach(SUBMODULE ${REQUIRED_SUBMODULES})
         execute_process(
             COMMAND ${GIT_TOOL_PATH} submodule update --init --recursive ${DEPTH} ${SUBMODULE}
             WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+            RESULT_VARIABLE RESULT
         )
 
     elseif(MISMATCH)
@@ -57,6 +59,11 @@ foreach(SUBMODULE ${REQUIRED_SUBMODULES})
         execute_process(
             COMMAND ${GIT_TOOL_PATH} submodule update --recursive ${SUBMODULE}
             WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+            RESULT_VARIABLE RESULT
         )
     endif()
+
+    if((NOT ${RESULT} STREQUAL "") AND (NOT ${RESULT} STREQUAL "0"))
+        message(FATAL_ERROR "Error in submodule setup; return value: ${RESULT}")
+    endif()
 endforeach()