diff --git a/CMakeLists.txt b/CMakeLists.txt
index c24add54443977f95b141831f821b24a5dc8ea14..dc932887c31dc31421d45ac6975708125bcb708d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -246,10 +246,14 @@ include_directories(
     ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/spdlog/include)
 
 # vtkdiff
-if(EXISTS ${PROJECT_SOURCE_DIR}/ThirdParty/vtkdiff/CMakeLists.txt AND BUILD_TESTING)
+if(BUILD_TESTING)
     add_subdirectory(ThirdParty/vtkdiff)
     install(PROGRAMS $<TARGET_FILE:vtkdiff> DESTINATION bin COMPONENT ogs_extras)
 endif()
+# xdmfdiff
+if(OGS_USE_XDMF AND BUILD_TESTING)
+    add_subdirectory(Tests/xdmfdiff)
+endif()
 
 include(scripts/cmake/CheckHeaderCompilation.cmake)
 
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index ce937a4ecdc7602a09244b2114dd9b1c8689cbba..a8a32d2d9176d3d4606367fec7b565e81a253268 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -1,8 +1,3 @@
-### xdmfdiff ###
-if(OGS_USE_XDMF)
-    add_subdirectory(xdmfdiff)
-endif()
-
 ### ctest dependencies
 foreach(tool vtkdiff xdmfdiff)
     if(TARGET ${tool})
diff --git a/scripts/cmake/SubmoduleSetup.cmake b/scripts/cmake/SubmoduleSetup.cmake
index 5e401914145c4f221dd1c6544517b43f4a7d7bbb..865fbceb3cd6435b0346fbc45f5ca5fe919dbb1a 100644
--- a/scripts/cmake/SubmoduleSetup.cmake
+++ b/scripts/cmake/SubmoduleSetup.cmake
@@ -18,9 +18,11 @@ set(REQUIRED_SUBMODULES
     ThirdParty/spdlog
     ThirdParty/tclap
     ThirdParty/tetgen
-    ThirdParty/xdmf
     ${OGS_ADDITIONAL_SUBMODULES_TO_CHECKOUT}
 )
+if(OGS_USE_XDMF)
+    list(APPEND REQUIRED_SUBMODULES ThirdParty/xdmf)
+endif()
 if(BUILD_TESTING)
     list(APPEND REQUIRED_SUBMODULES ThirdParty/vtkdiff)
 endif()