diff --git a/CMake/WikiPolicies.cmake b/CMake/WikiPolicies.cmake
index 4a59acf1b5a688e47cdcf1edd00439610914205f..9e7ea2896a83ddda0da581034092a10db9157fb2 100644
--- a/CMake/WikiPolicies.cmake
+++ b/CMake/WikiPolicies.cmake
@@ -8,6 +8,7 @@ foreach(p
     CMP0025 # CMake 3.0
     CMP0043 # CMake 3.0
     CMP0053 # CMake 3.1
+    CMP0071
       )
   if(POLICY ${p})
     cmake_policy(SET ${p} NEW)
diff --git a/src/Admin/ScrapeRepo b/src/Admin/ScrapeRepo
index d23f6cc5258eecf6b76cdf4da758e0bc1990628f..da62a6dc0ed2751647978654b8fcafe03900437f 100755
--- a/src/Admin/ScrapeRepo
+++ b/src/Admin/ScrapeRepo
@@ -315,8 +315,9 @@ def FillCMakeLists(S, Name, ExtraNames, Components):
     return reg
 
 
-def FillQtCMakeLists(S, Name):
-    reg = re.sub(r'XXX', Name, S)
+def FillQtCMakeLists(S, Name, Components):
+    r1 = re.sub(r'XXX', Name, S)
+    reg = re.sub(r'ZZZ', Components, r1)
     return reg
 
 #####################################################################
@@ -669,7 +670,17 @@ for lang, langExt in Languages.items():
                     CMakeFile = open(RepoDir + "/Admin/VTKQtCMakeLists", 'r')
                     CMakeContents = CMakeFile.read()
                     CMakeFile.close()
-                    cmake = FillQtCMakeLists(CMakeContents, ExampleName)
+                    # Create component lines
+                    Components = ""
+                    for component in components:
+                        if "vtk" in component:
+                            Components += "\n  " + component
+                        else:
+                            Components += "\n  " + "vtk" + component
+                    # If there are no components found, assume we need then all
+                    # This occurs when the source file includes another Cxx file
+                    #print("Components: " + Components)
+                    cmake = FillQtCMakeLists(CMakeContents, ExampleName, Components)
                 else:
                     CMakeFile = open(RepoDir + "/Admin/VTKCMakeLists", 'r')
                     CMakeContents = CMakeFile.read()
diff --git a/src/Admin/VTKQtCMakeLists b/src/Admin/VTKQtCMakeLists
index 9b314336ea2adf5016d6c5a5f186162ef744e9eb..83c48874616b19f6b28b3efdce42b8dd59af53eb 100644
--- a/src/Admin/VTKQtCMakeLists
+++ b/src/Admin/VTKQtCMakeLists
@@ -1,6 +1,6 @@
 ###CMakeLists.txt
 ```cmake
-cmake_minimum_required(VERSION 2.8)
+cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
  
 if(POLICY CMP0020)
   cmake_policy(SET CMP0020 NEW)
@@ -8,8 +8,27 @@ endif()
 
 PROJECT(XXX)
 
-find_package(VTK REQUIRED)
-include(${VTK_USE_FILE})
+find_package(VTK COMPONENTS ZZZ))
+if (NOT VTK_FOUND)
+  message("Skipping XXX: ${VTK_NOT_FOUND_MESSAGE}")
+  return ()
+endif()
+message (STATUS "VTK_VERSION: ${VTK_VERSION}")
+if (VTK_VERSION VERSION_LESS "8.90.0")
+  # old system
+  include(${VTK_USE_FILE})
+  add_executable(XXX MACOSX_BUNDLE XXX.cxx )
+  target_link_libraries(XXX PRIVATE ${VTK_LIBRARIES})
+else ()
+  # include all components
+  add_executable(XXX MACOSX_BUNDLE XXX.cxx )
+  target_link_libraries(XXX PRIVATE ${VTK_LIBRARIES})
+  # vtk_module_autoinit is needed
+  vtk_module_autoinit(
+    TARGETS XXX
+    MODULES ${VTK_LIBRARIES}
+    )
+endif () 
 
 if(${VTK_VERSION} VERSION_GREATER "6" AND VTK_QT_VERSION VERSION_GREATER "4")
   # Instruct CMake to run moc automatically when needed.
diff --git a/src/Cxx/Qt/CMakeLists.txt b/src/Cxx/Qt/CMakeLists.txt
index 868e7e960086485ef6a2044429c3b0eb117b337c..807822a7f0ef1a42397a1a9192418b6e50148630 100644
--- a/src/Cxx/Qt/CMakeLists.txt
+++ b/src/Cxx/Qt/CMakeLists.txt
@@ -6,6 +6,7 @@ foreach(p
     CMP0025 # CMake 3.0
     CMP0043 # CMake 3.0
     CMP0053 # CMake 3.1
+    CMP0071
     )
   if(POLICY ${p})
     cmake_policy(SET ${p} NEW)