diff --git a/CMakeLists.txt b/CMakeLists.txt
index 70a168672364f6a72d9ed28a013b9faf14d5cb48..9e1ce04bc3789af7b148172422d351acb12d13b3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -272,7 +272,7 @@ include_directories(
     ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/spdlog/include)
 
 # vtkdiff
-if(EXISTS ${PROJECT_SOURCE_DIR}/ThirdParty/vtkdiff/CMakeLists.txt)
+if(EXISTS ${PROJECT_SOURCE_DIR}/ThirdParty/vtkdiff/CMakeLists.txt AND BUILD_TESTING)
     add_subdirectory(ThirdParty/vtkdiff)
     install(PROGRAMS $<TARGET_FILE:vtkdiff> DESTINATION bin COMPONENT ogs_extras)
 endif()
diff --git a/ThirdParty/CMakeLists.txt b/ThirdParty/CMakeLists.txt
index 65f1dba86e99170c2d36e1cb5de384d55a40ab9d..9760f5c9d71da2c86703b5e0ff86cb3a982bb211 100644
--- a/ThirdParty/CMakeLists.txt
+++ b/ThirdParty/CMakeLists.txt
@@ -1,9 +1,11 @@
 add_subdirectory(spdlog)
 set(DISABLE_WARNINGS_TARGETS spdlog)
 
-set(gtest_force_shared_crt ON CACHE INTERNAL "") # Use dynamic MSVC runtime
-set(INSTALL_GTEST OFF CACHE INTERNAL "")
-add_subdirectory(googletest)
+if(BUILD_TESTING)
+    set(gtest_force_shared_crt ON CACHE INTERNAL "") # Use dynamic MSVC runtime
+    set(INSTALL_GTEST OFF CACHE INTERNAL "")
+    add_subdirectory(googletest)
+endif()
 
 # This is a workaround for Travis builds.
 option(OGS_USE_OPTIONAL_SUBMODULES "Option for enabling optional submodules" OFF)
diff --git a/scripts/cmake/SubmoduleSetup.cmake b/scripts/cmake/SubmoduleSetup.cmake
index 6100c8c3905688ffe25f01cd6658f187b3677a5f..7fa03a91e1620cb660086a77a813457c10a427cb 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/vtkdiff
     ${OGS_ADDITIONAL_SUBMODULES_TO_CHECKOUT}
 )
+if(BUILD_TESTING)
+    list(APPEND REQUIRED_SUBMODULES ThirdParty/vtkdiff)
+endif()
 if(OGS_BUILD_UTILS)
     # Required by the partmesh tool, which is build with utils only.
     list(APPEND REQUIRED_SUBMODULES ThirdParty/metis)
diff --git a/scripts/cmake/test/OgsTest.cmake b/scripts/cmake/test/OgsTest.cmake
index f4e166ca3bfd9e528ee9de19f094c0426a0611fe..b05609b5d9b03284aed1b139a605fae448659754 100644
--- a/scripts/cmake/test/OgsTest.cmake
+++ b/scripts/cmake/test/OgsTest.cmake
@@ -1,5 +1,5 @@
 function (OgsTest)
-    if(NOT OGS_BUILD_CLI)
+    if(NOT OGS_BUILD_CLI OR NOT BUILD_TESTING)
         return()
     endif()
     set(options LARGE)