diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7b05feca2d3f479a498cb781013d94669c318a5e..c32420c3ea0de76dd5f358d5925cafdc2d19a4aa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,7 +40,16 @@ if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
   # Update submodules as needed
   option(GIT_SUBMODULE "Check submodules during build" ON)
   if(GIT_SUBMODULE)
-    message(STATUS "Submodule update")
+    execute_process(
+      COMMAND ${GIT_EXECUTABLE} submodule sync --recursive
+      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+      RESULT_VARIABLE GIT_SUBMOD_SYNC_RESULT)
+    if(NOT GIT_SUBMOD_SYNC_RESULT EQUAL "0")
+      message(
+        FATAL_ERROR
+          "git submodule sync failed with ${GIT_SUBMOD_SYNC_RESULT}, please checkout submodules"
+      )
+    endif()
     execute_process(
       COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive --checkout
       WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}