diff --git a/CMakeLists.txt b/CMakeLists.txt
index e4ea1fe41074ac341774310236994e19218c7e1b..2ae82d642f6b29cef155f878b6f84d66ff0489c2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,9 @@ cmake_minimum_required(VERSION 3.12)
 cmake_policy(SET CMP0054 NEW)
 cmake_policy(SET CMP0071 NEW)
 cmake_policy(SET CMP0074 NEW)
+if(${CMAKE_VERSION} VERSION_GREATER 3.14)
+    cmake_policy(SET CMP0092 NEW)
+endif()
 
 if(MSVC AND NOT ${CMAKE_GENERATOR} STREQUAL Ninja)
     # Force 64-bit VS compiler
@@ -63,6 +66,7 @@ option(OGS_USE_CVODE "Use the Sundials CVODE module?" OFF)
 # ---- CMake includes ----
 include(PreFind)
 include(SubmoduleSetup)
+add_subdirectory(ThirdParty)
 include(Versions)
 include(CheckTypeSizes)
 include(CheckArchitecture)
@@ -334,7 +338,7 @@ if(OGS_INSITU)
     include("${PARAVIEW_USE_FILE}")
     add_definitions(-DUSE_INSITU)
 endif()
-add_subdirectory(ThirdParty)
+
 include_directories(
     SYSTEM
     ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty
@@ -344,6 +348,12 @@ include_directories(
     ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/json/include
     ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/exprtk)
 
+# vtkdiff
+if(EXISTS ${PROJECT_SOURCE_DIR}/ThirdParty/vtkdiff/CMakeLists.txt)
+    add_subdirectory(ThirdParty/vtkdiff)
+    install(PROGRAMS $<TARGET_FILE:vtkdiff> DESTINATION bin COMPONENT ogs_extras)
+endif()
+
 include(scripts/cmake/CheckHeaderCompilation.cmake)
 
 add_subdirectory(Applications)
diff --git a/ThirdParty/CMakeLists.txt b/ThirdParty/CMakeLists.txt
index 5694837ca890b1cddd7365a01808b6b0f43560bc..bac995488a20158695aade4927297eba8916b3c2 100644
--- a/ThirdParty/CMakeLists.txt
+++ b/ThirdParty/CMakeLists.txt
@@ -1,22 +1,5 @@
-# Disable all warnings
-if(COMPILER_IS_CLANG OR COMPILER_IS_GCC)
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
-elseif(MSVC)
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W0")
-endif()
-
-# Add logog subdirectory and group its targets in a Visual Studio folder
 add_subdirectory(logog)
-if(BUILD_TESTING)
-    set_property(TARGET Continuous PROPERTY FOLDER "logog")
-endif()
-set_property(TARGET logog PROPERTY FOLDER "logog")
-set_property(TARGET test-logog PROPERTY FOLDER "logog")
-set_target_properties(test-logog PROPERTIES EXCLUDE_FROM_ALL TRUE)
-target_compile_options(logog PRIVATE
-    $<$<CXX_COMPILER_ID:Clang>:-w>
-    $<$<CXX_COMPILER_ID:GNU>:-w>
-    $<$<CXX_COMPILER_ID:MSVC>:/W0>)
+set(DISABLE_WARNINGS_TARGETS logog)
 
 set(gtest_force_shared_crt ON CACHE INTERNAL "") # Use dynamic MSVC runtime
 set(INSTALL_GTEST OFF CACHE INTERNAL "")
@@ -25,12 +8,13 @@ add_subdirectory(googletest)
 # This is a workaround for Travis builds.
 option(OGS_USE_OPTIONAL_SUBMODULES "Option for enabling optional submodules" OFF)
 
-#iphreeqc
+# iphreeqc
 if (OGS_BUILD_PROCESS_ComponentTransport
     OR OGS_BUILD_PROCESS_RichardsComponentTransport
     OR OGS_BUILD_PROCESS_RichardsComponentTransport
     OR OGS_BUILD_PROCESS_HeatTransportBHE)
     add_subdirectory(iphreeqc)
+    list(APPEND DISABLE_WARNINGS_TARGETS iphreeqc)
 endif()
 
 # MFrontGenericInterfaceSupport
@@ -40,6 +24,7 @@ if (OGS_USE_MFRONT)
     set(CMAKE_CXX_STANDARD 11)
     add_subdirectory(MGIS)
     set(CMAKE_CXX_STANDARD 17)
+    list(APPEND DISABLE_WARNINGS_TARGETS MFrontGenericInterface)
 endif()
 
 # VtkFbxConverter
@@ -51,26 +36,13 @@ endif()
 # tetgen
 if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/tetgen/CMakeLists.txt)
     add_subdirectory(tetgen)
+    list(APPEND DISABLE_WARNINGS_TARGETS tet tetgen)
     install(PROGRAMS $<TARGET_FILE:tetgen> DESTINATION bin COMPONENT ogs_extras)
-    target_compile_options(tet PRIVATE
-        $<$<CXX_COMPILER_ID:Clang>:-w>
-        $<$<CXX_COMPILER_ID:GNU>:-w>
-        $<$<CXX_COMPILER_ID:MSVC>:/W0>)
-    target_compile_options(tetgen PRIVATE
-        $<$<CXX_COMPILER_ID:Clang>:-w>
-        $<$<CXX_COMPILER_ID:GNU>:-w>
-        $<$<CXX_COMPILER_ID:MSVC>:/W0>)
-endif()
-
-# vtkdiff
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/vtkdiff/CMakeLists.txt)
-    add_subdirectory(vtkdiff)
-    install (PROGRAMS $<TARGET_FILE:vtkdiff> DESTINATION bin COMPONENT ogs_extras)
 endif()
 
 if(OGS_BUILD_SWMM)
     add_subdirectory(SWMMInterface)
-    set_target_properties(SWMM SwmmInterface PROPERTIES COMPILE_FLAGS /W0)
+    list(APPEND DISABLE_WARNINGS_TARGETS SWMM SwmmInterface)
 endif()
 
 if(OGS_USE_PYTHON)
@@ -113,4 +85,11 @@ endif()
 
 if(OGS_BUILD_UTILS)
     include(${PROJECT_SOURCE_DIR}/scripts/cmake/MetisSetup.cmake)
+    list(APPEND DISABLE_WARNINGS_TARGETS metis mpmetis)
 endif()
+
+foreach(TARGET ${DISABLE_WARNINGS_TARGETS})
+    target_compile_options(${TARGET} PRIVATE
+        $<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:GNU>>:-w>
+        $<$<CXX_COMPILER_ID:MSVC>:/W0>)
+endforeach()
diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake
index f27da8092807262a8a2993a10de0f79eb7430a8c..6be8db4d9969c8f6bdcbff06d7bb6ce8888a5789 100644
--- a/scripts/cmake/Find.cmake
+++ b/scripts/cmake/Find.cmake
@@ -15,12 +15,6 @@ find_program(GPROF_PATH gprof DOC "GNU profiler gprof" QUIET)
 
 find_program(CPPCHECK_TOOL_PATH cppcheck)
 
-if(OGS_USE_PYTHON)
-    find_package(Python3 COMPONENTS Interpreter Development REQUIRED)
-else()
-    find_package(Python3 COMPONENTS Interpreter)
-endif()
-
 # Find bash itself ...
 find_program(BASH_TOOL_PATH bash
     HINTS ${GITHUB_BIN_DIR} DOC "The bash executable")
diff --git a/scripts/cmake/PreFind.cmake b/scripts/cmake/PreFind.cmake
index 2af46e8a8c2d3e75087c69bb9bd9f0621dfb6591..281aad29fe42c146e7e1f14b1d8dff7d61e371ce 100644
--- a/scripts/cmake/PreFind.cmake
+++ b/scripts/cmake/PreFind.cmake
@@ -18,3 +18,9 @@ if(IS_GIT_REPO GREATER 0)
 else()
 set(IS_GIT_REPO TRUE CACHE INTERNAL "")
 endif()
+
+if(OGS_USE_PYTHON)
+    find_package(Python3 COMPONENTS Interpreter Development REQUIRED)
+else()
+    find_package(Python3 COMPONENTS Interpreter)
+endif()
\ No newline at end of file