Browse Source

Tests: Add support for testing Qt6

The minimum CMake version for Qt6 is 3.16, so all the calls to
cmake_minimum_required() are updated here to enforce that
minimum. This will avoid any CMake version-related warnings
from Qt.

Avoid hard-coding Qt5 where the tests could now be using
Qt5 or Qt6.

Fixes: #22188
Craig Scott 4 years ago
parent
commit
a742088472
78 changed files with 272 additions and 166 deletions
  1. 1 1
      .gitlab/artifacts.yml
  2. 10 0
      Tests/CMakeLists.txt
  3. 8 0
      Tests/Qt6Autogen/CMakeLists.txt
  4. 8 8
      Tests/QtAutogen/AutogenCoreTest.cmake
  5. 8 8
      Tests/QtAutogen/AutogenGuiTest.cmake
  6. 1 1
      Tests/QtAutogen/AutogenOriginDependsOff/CMakeLists.txt
  7. 1 1
      Tests/QtAutogen/AutogenOriginDependsOn/CMakeLists.txt
  8. 1 1
      Tests/QtAutogen/AutogenTargetDepends/CMakeLists.txt
  9. 3 1
      Tests/QtAutogen/Complex/CMakeLists.txt
  10. 4 0
      Tests/QtAutogen/Complex/codeeditor.cpp
  11. 2 1
      Tests/QtAutogen/GlobalAutogenTarget/CMakeLists.txt
  12. 2 2
      Tests/QtAutogen/GlobalAutogenTarget/GAT/CMakeLists.txt
  13. 12 10
      Tests/QtAutogen/MacOsFW/CMakeLists.txt
  14. 2 4
      Tests/QtAutogen/MacOsFW/src/CMakeLists.txt
  15. 6 6
      Tests/QtAutogen/MacOsFW/test/CMakeLists.txt
  16. 1 1
      Tests/QtAutogen/ManySources/CMakeLists.txt
  17. 1 1
      Tests/QtAutogen/MocCMP0071/CMakeLists.txt
  18. 0 1
      Tests/QtAutogen/MocCMP0071/NEW/CMakeLists.txt
  19. 0 1
      Tests/QtAutogen/MocCMP0071/OLD/CMakeLists.txt
  20. 1 1
      Tests/QtAutogen/MocCMP0100/CMakeLists.txt
  21. 0 1
      Tests/QtAutogen/MocCMP0100/NEW/CMakeLists.txt
  22. 0 1
      Tests/QtAutogen/MocCMP0100/OLD/CMakeLists.txt
  23. 1 1
      Tests/QtAutogen/MocInclude/CMakeLists.txt
  24. 2 1
      Tests/QtAutogen/MocIncludeSymlink/CMakeLists.txt
  25. 1 1
      Tests/QtAutogen/MocMacroName/CMakeLists.txt
  26. 1 1
      Tests/QtAutogen/MocOnly/CMakeLists.txt
  27. 1 1
      Tests/QtAutogen/MocOptions/CMakeLists.txt
  28. 3 3
      Tests/QtAutogen/MocOsMacros/CMakeLists.txt
  29. 1 1
      Tests/QtAutogen/MocSkipSource/CMakeLists.txt
  30. 2 2
      Tests/QtAutogen/ObjectLibrary/CMakeLists.txt
  31. 1 1
      Tests/QtAutogen/ObjectLibrary/a/CMakeLists.txt
  32. 1 1
      Tests/QtAutogen/Parallel/CMakeLists.txt
  33. 1 1
      Tests/QtAutogen/Parallel1/CMakeLists.txt
  34. 1 1
      Tests/QtAutogen/Parallel2/CMakeLists.txt
  35. 1 1
      Tests/QtAutogen/Parallel3/CMakeLists.txt
  36. 1 1
      Tests/QtAutogen/Parallel4/CMakeLists.txt
  37. 1 1
      Tests/QtAutogen/ParallelAUTO/CMakeLists.txt
  38. 1 1
      Tests/QtAutogen/RccEmpty/CMakeLists.txt
  39. 3 5
      Tests/QtAutogen/RccOffMocLibrary/CMakeLists.txt
  40. 1 1
      Tests/QtAutogen/RccOnly/CMakeLists.txt
  41. 1 1
      Tests/QtAutogen/RccSkipSource/CMakeLists.txt
  42. 2 1
      Tests/QtAutogen/RerunMocBasic/CMakeLists.txt
  43. 1 1
      Tests/QtAutogen/RerunMocBasic/MocBasic/CMakeLists.txt
  44. 2 1
      Tests/QtAutogen/RerunMocOnAddFile/CMakeLists.txt
  45. 1 1
      Tests/QtAutogen/RerunMocOnAddFile/MocOnAddFile/CMakeLists.txt.in
  46. 5 4
      Tests/QtAutogen/RerunMocOnMissingDependency/CMakeLists.txt
  47. 2 1
      Tests/QtAutogen/RerunMocPlugin/CMakeLists.txt
  48. 2 2
      Tests/QtAutogen/RerunMocPlugin/MocPlugin/CMakeLists.txt
  49. 2 1
      Tests/QtAutogen/RerunRccConfigChange/CMakeLists.txt
  50. 1 1
      Tests/QtAutogen/RerunRccConfigChange/RccConfigChange/CMakeLists.txt
  51. 2 1
      Tests/QtAutogen/RerunRccDepends/CMakeLists.txt
  52. 1 1
      Tests/QtAutogen/RerunRccDepends/RccDepends/CMakeLists.txt
  53. 1 0
      Tests/QtAutogen/RerunUicOnFileChange/CMakeLists.txt
  54. 1 1
      Tests/QtAutogen/RerunUicOnFileChange/UicOnFileChange/CMakeLists.txt.in
  55. 1 1
      Tests/QtAutogen/StaticLibraryCycle/CMakeLists.txt
  56. 10 1
      Tests/QtAutogen/TestMacros.cmake
  57. 1 1
      Tests/QtAutogen/UicInclude/CMakeLists.txt
  58. 3 3
      Tests/QtAutogen/UicInterface/CMakeLists.txt
  59. 1 1
      Tests/QtAutogen/UicNoGui/CMakeLists.txt
  60. 1 1
      Tests/QtAutogen/UicOnly/CMakeLists.txt
  61. 1 1
      Tests/QtAutogen/UicSkipSource/CMakeLists.txt
  62. 1 1
      Tests/RunCMake/Autogen/CMP0111-imported-target-prelude.cmake
  63. 1 1
      Tests/RunCMake/Autogen/CMakeLists.txt
  64. 3 3
      Tests/RunCMake/Autogen/QtInFunction.cmake
  65. 3 3
      Tests/RunCMake/Autogen/QtInFunctionNested.cmake
  66. 3 3
      Tests/RunCMake/Autogen/QtInFunctionProperty.cmake
  67. 7 1
      Tests/RunCMake/Autogen/RunCMakeTest.cmake
  68. 53 11
      Tests/RunCMake/CMakeLists.txt
  69. 0 21
      Tests/RunCMake/Ninja/Qt5AutoMocDeps.cmake
  70. 27 0
      Tests/RunCMake/Ninja/QtAutoMocDeps.cmake
  71. 1 1
      Tests/RunCMake/Ninja/QtSubDir1/CMakeLists.txt
  72. 1 1
      Tests/RunCMake/Ninja/QtSubDir2/CMakeLists.txt
  73. 1 1
      Tests/RunCMake/Ninja/QtSubDir3/CMakeLists.txt
  74. 14 7
      Tests/RunCMake/Ninja/RunCMakeTest.cmake
  75. 0 0
      Tests/RunCMake/NinjaMultiConfig/QtX-automoc-check-ninja-stdout.txt
  76. 0 0
      Tests/RunCMake/NinjaMultiConfig/QtX-debug-in-release-graph-build-check.cmake
  77. 6 3
      Tests/RunCMake/NinjaMultiConfig/QtX.cmake
  78. 13 7
      Tests/RunCMake/NinjaMultiConfig/RunCMakeTest.cmake

+ 1 - 1
.gitlab/artifacts.yml

@@ -56,7 +56,7 @@
             # Test directories.
             - build/Tests/CTest*
             - build/Tests/Find*
-            - build/Tests/Qt5*
+            - build/Tests/Qt*
             - build/Tests/RunCMake/
             - build/Tests/CMakeOnly/
             - build/Tests/CMakeTests/

+ 10 - 0
Tests/CMakeLists.txt

@@ -257,6 +257,13 @@ if(BUILD_TESTING)
   #---------------------------------------------------------------------------
   # Add tests below here.
 
+  if(NOT DEFINED CMake_TEST_Qt6)
+    set(CMake_TEST_Qt6 1)
+  endif()
+  if(CMake_TEST_Qt6)
+    find_package(Qt6 COMPONENTS Core Widgets QUIET NO_MODULE)
+  endif()
+
   if(NOT DEFINED CMake_TEST_Qt5)
     set(CMake_TEST_Qt5 1)
   endif()
@@ -1384,6 +1391,9 @@ if(BUILD_TESTING)
     )
   list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/QtAutomocNoQt")
 
+  if(CMake_TEST_Qt6 AND Qt6Widgets_FOUND)
+    add_subdirectory(Qt6Autogen)
+  endif()
   if(CMake_TEST_Qt5 AND Qt5Widgets_FOUND)
     add_subdirectory(Qt5Autogen)
   endif()

+ 8 - 0
Tests/Qt6Autogen/CMakeLists.txt

@@ -0,0 +1,8 @@
+# Set Qt test version and include the Autogen test macros
+set(QT_TEST_VERSION 6)
+include("../QtAutogen/TestMacros.cmake")
+
+# Common tests
+include("../QtAutogen/Tests.cmake")
+
+set(TEST_BUILD_DIRS "${TEST_BUILD_DIRS}" PARENT_SCOPE)

+ 8 - 8
Tests/QtAutogen/AutogenCoreTest.cmake

@@ -21,27 +21,27 @@ if (QT_TEST_VERSION EQUAL 4)
     qt4_generate_moc(${ARGN})
   endmacro()
 
-elseif(QT_TEST_VERSION EQUAL 5)
+elseif(QT_TEST_VERSION GREATER_EQUAL 5)
 
-  find_package(Qt5Core REQUIRED)
+  find_package(Qt${QT_TEST_VERSION}Core REQUIRED)
 
-  set(QT_QTCORE_TARGET Qt5::Core)
-  set(QT_LIBRARIES Qt5::Core)
+  set(QT_QTCORE_TARGET Qt${QT_TEST_VERSION}::Core)
+  set(QT_LIBRARIES Qt${QT_TEST_VERSION}::Core)
 
   # Include directories
-  include_directories(${Qt5Core_INCLUDE_DIRS})
+  include_directories(${Qt${QT_TEST_VERSION}Core_INCLUDE_DIRS})
 
   # Definitions
-  if(Qt5_POSITION_INDEPENDENT_CODE AND CMAKE_CXX_COMPILE_OPTIONS_PIC)
+  if(Qt${QT_TEST_VERSION}_POSITION_INDEPENDENT_CODE AND CMAKE_CXX_COMPILE_OPTIONS_PIC)
     add_definitions(${CMAKE_CXX_COMPILE_OPTIONS_PIC})
   endif()
 
   # Qt macros
   macro(qtx_wrap_cpp)
-    qt5_wrap_cpp(${ARGN})
+    cmake_language(CALL qt${QT_TEST_VERSION}_wrap_cpp ${ARGN})
   endmacro()
   macro(qtx_generate_moc)
-    qt5_generate_moc(${ARGN})
+    cmake_language(CALL qt${QT_TEST_VERSION}_generate_moc ${ARGN})
   endmacro()
 
 else()

+ 8 - 8
Tests/QtAutogen/AutogenGuiTest.cmake

@@ -21,27 +21,27 @@ if (QT_TEST_VERSION EQUAL 4)
     qt4_generate_moc(${ARGN})
   endmacro()
 
-elseif(QT_TEST_VERSION EQUAL 5)
+elseif(QT_TEST_VERSION GREATER_EQUAL 5)
 
-  find_package(Qt5Widgets REQUIRED)
+  find_package(Qt${QT_TEST_VERSION}Widgets REQUIRED)
 
-  set(QT_QTCORE_TARGET Qt5::Core)
-  set(QT_LIBRARIES Qt5::Widgets)
+  set(QT_QTCORE_TARGET Qt${QT_TEST_VERSION}::Core)
+  set(QT_LIBRARIES Qt${QT_TEST_VERSION}::Widgets)
 
   # Include directories
-  include_directories(${Qt5Widgets_INCLUDE_DIRS})
+  include_directories(${Qt${QT_TEST_VERSION}Widgets_INCLUDE_DIRS})
 
   # Definitions
-  if(Qt5_POSITION_INDEPENDENT_CODE AND CMAKE_CXX_COMPILE_OPTIONS_PIC)
+  if(Qt${QT_TEST_VERSION}_POSITION_INDEPENDENT_CODE AND CMAKE_CXX_COMPILE_OPTIONS_PIC)
     add_definitions(${CMAKE_CXX_COMPILE_OPTIONS_PIC})
   endif()
 
   # Qt macros
   macro(qtx_wrap_cpp)
-    qt5_wrap_cpp(${ARGN})
+    cmake_language(CALL qt${QT_TEST_VERSION}_wrap_cpp ${ARGN})
   endmacro()
   macro(qtx_generate_moc)
-    qt5_generate_moc(${ARGN})
+    cmake_language(CALL qt${QT_TEST_VERSION}_generate_moc ${ARGN})
   endmacro()
 
 else()

+ 1 - 1
Tests/QtAutogen/AutogenOriginDependsOff/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.11)
+cmake_minimum_required(VERSION 3.16)
 project(AutogenOriginDependsOff)
 include("../AutogenCoreTest.cmake")
 

+ 1 - 1
Tests/QtAutogen/AutogenOriginDependsOn/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(AutogenOriginDependsOn)
 include("../AutogenCoreTest.cmake")
 

+ 1 - 1
Tests/QtAutogen/AutogenTargetDepends/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(AutogenTargetDepends)
 include("../AutogenCoreTest.cmake")
 

+ 3 - 1
Tests/QtAutogen/Complex/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(Complex)
 include("../AutogenGuiTest.cmake")
 
@@ -16,6 +16,8 @@ add_library(privateSlot OBJECT private_slot.cpp)
 # Pass Qt compiler features to targets that don't link against Qt
 target_compile_features(codeeditorLib PRIVATE ${QT_COMPILE_FEATURES})
 target_compile_features(privateSlot PRIVATE ${QT_COMPILE_FEATURES})
+target_link_libraries(codeeditorLib PRIVATE ${QT_LIBRARIES})
+target_link_libraries(privateSlot PRIVATE ${QT_LIBRARIES})
 
 configure_file(generated_resource.qrc.in generated_resource.qrc @ONLY)
 add_custom_command(

+ 4 - 0
Tests/QtAutogen/Complex/codeeditor.cpp

@@ -70,7 +70,11 @@ int CodeEditor::lineNumberAreaWidth()
     ++digits;
   }
 
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0))
+  int space = 3 + fontMetrics().horizontalAdvance(QLatin1Char('9')) * digits;
+#else
   int space = 3 + fontMetrics().width(QLatin1Char('9')) * digits;
+#endif
 
   return space;
 }

+ 2 - 1
Tests/QtAutogen/GlobalAutogenTarget/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12)
+cmake_minimum_required(VERSION 3.16)
 project(GlobalAutogenTarget)
 include("../AutogenCoreTest.cmake")
 
@@ -74,6 +74,7 @@ execute_process(
         -T "${CMAKE_GENERATOR_TOOLSET}"
         "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
         "-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
+        "-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
         "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
     WORKING_DIRECTORY "${GAT_BDIR}"
     OUTPUT_VARIABLE output

+ 2 - 2
Tests/QtAutogen/GlobalAutogenTarget/GAT/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12)
+cmake_minimum_required(VERSION 3.16)
 project(GAT)
 include("../../AutogenCoreTest.cmake")
 
@@ -9,7 +9,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR})
 set(CMAKE_AUTOMOC ON)
 set(CMAKE_AUTOUIC ON)
 set(CMAKE_AUTORCC ON)
-# Disable ORIGN_DEPENDS and enable AUTOGEN global targets
+# Disable ORIGIN_DEPENDS and enable AUTOGEN global targets
 set(CMAKE_AUTOGEN_ORIGIN_DEPENDS OFF)
 set(CMAKE_GLOBAL_AUTOGEN_TARGET ON)
 set(CMAKE_GLOBAL_AUTORCC_TARGET ON)

+ 12 - 10
Tests/QtAutogen/MacOsFW/CMakeLists.txt

@@ -1,21 +1,23 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(MacOsFW)
 include("../AutogenGuiTest.cmake")
 
-find_package(Qt5Test REQUIRED)
+find_package(Qt${QT_TEST_VERSION}Test REQUIRED)
+
+if(QT_TEST_VERSION EQUAL 5)
+  set(CMAKE_CXX_STANDARD 11)
+elseif(QT_TEST_VERSION EQUAL 6)
+  set(CMAKE_CXX_STANDARD 17)
+else()
+  message(FATAL_ERROR "Unsupported Qt version: ${QT_TEST_VERSION}")
+endif()
 
-set(CMAKE_CXX_STANDARD 11)
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output/bin)
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output/lib)
 set(CMAKE_INSTALL_NAME_DIR ${CMAKE_BINARY_DIR}/output/lib)
 
-if(POLICY CMP0042) # in CMake 3.0.0+
-  set (CMAKE_MACOSX_RPATH OFF) # otherwise ON by default
-endif(POLICY CMP0042)
-
-if(POLICY CMP0068) # in CMake 3.9+
-  cmake_policy(SET CMP0068 NEW)
-endif(POLICY CMP0068)
+set (CMAKE_MACOSX_RPATH OFF) # otherwise ON by default
+cmake_policy(SET CMP0068 NEW)
 
 add_subdirectory(src)
 add_subdirectory(test)

+ 2 - 4
Tests/QtAutogen/MacOsFW/src/CMakeLists.txt

@@ -9,7 +9,7 @@ set(MACOS_FW_LIB_HDRS
 include_directories(
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_BINARY_DIR}
-  ${Qt5Core_INCLUDE_DIRS}
+  ${Qt${QT_TEST_VERSION}Core_INCLUDE_DIRS}
 )
 
 add_library(macos_fw_lib SHARED
@@ -28,6 +28,4 @@ set_target_properties(macos_fw_lib PROPERTIES
   POSITION_INDEPENDENT_CODE ON
   PUBLIC_HEADER "${MACOS_FW_LIB_HDRS}"
 )
-target_link_libraries(macos_fw_lib
-  Qt5::Core
-)
+target_link_libraries(macos_fw_lib PRIVATE ${QT_QTCORE_TARGET})

+ 6 - 6
Tests/QtAutogen/MacOsFW/test/CMakeLists.txt

@@ -4,16 +4,16 @@ include_directories(
   ${CMAKE_CURRENT_SOURCE_DIR}/../src
 )
 include_directories(SYSTEM
-  ${Qt5Core_INCLUDE_DIRS}
-  ${Qt5Widgets_INCLUDE_DIRS}
+  ${Qt${QT_TEST_VERSION}Core_INCLUDE_DIRS}
+  ${Qt${QT_TEST_VERSION}Widgets_INCLUDE_DIRS}
 )
 
 set(testname AutomocMacosFWLib)
 add_executable(${testname} testMacosFWLib.cpp)
 set_target_properties(${testname} PROPERTIES AUTOMOC TRUE)
-target_link_libraries(${testname}
-  Qt5::Core
-  Qt5::Widgets
-  Qt5::Test
+target_link_libraries(${testname} PRIVATE
+  Qt${QT_TEST_VERSION}::Core
+  Qt${QT_TEST_VERSION}::Widgets
+  Qt${QT_TEST_VERSION}::Test
   macos_fw_lib
 )

+ 1 - 1
Tests/QtAutogen/ManySources/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(ManySources)
 include("../AutogenGuiTest.cmake")
 

+ 1 - 1
Tests/QtAutogen/MocCMP0071/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(MocCMP0071)
 include("../AutogenCoreTest.cmake")
 

+ 0 - 1
Tests/QtAutogen/MocCMP0071/NEW/CMakeLists.txt

@@ -1,4 +1,3 @@
-cmake_minimum_required(VERSION 3.10)
 cmake_policy(SET CMP0071 NEW)
 
 # *Generate* files

+ 0 - 1
Tests/QtAutogen/MocCMP0071/OLD/CMakeLists.txt

@@ -1,4 +1,3 @@
-cmake_minimum_required(VERSION 3.10)
 cmake_policy(SET CMP0071 OLD)
 
 # *Generate* files

+ 1 - 1
Tests/QtAutogen/MocCMP0100/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(MocCMP0100)
 include("../AutogenCoreTest.cmake")
 

+ 0 - 1
Tests/QtAutogen/MocCMP0100/NEW/CMakeLists.txt

@@ -1,4 +1,3 @@
-cmake_minimum_required(VERSION 3.16)
 cmake_policy(SET CMP0100 NEW)
 
 add_executable(mocCMP0100New

+ 0 - 1
Tests/QtAutogen/MocCMP0100/OLD/CMakeLists.txt

@@ -1,4 +1,3 @@
-cmake_minimum_required(VERSION 3.16)
 cmake_policy(SET CMP0100 OLD)
 
 # Generate moc files externally.

+ 1 - 1
Tests/QtAutogen/MocInclude/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.15)
+cmake_minimum_required(VERSION 3.16)
 project(MocInclude)
 get_filename_component(CS_REAL ${CMAKE_CURRENT_SOURCE_DIR} REALPATH)
 include("${CS_REAL}/../AutogenCoreTest.cmake")

+ 2 - 1
Tests/QtAutogen/MocIncludeSymlink/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.15)
+cmake_minimum_required(VERSION 3.16)
 project(MocIncludeSymlink)
 include("../AutogenCoreTest.cmake")
 
@@ -63,6 +63,7 @@ macro(buildMocInclude sourceDir binaryDir)
     CMAKE_FLAGS "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
                 "-DCMAKE_AUTOMOC_PATH_PREFIX=ON"
                 "-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
+                "-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
                 "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
     OUTPUT_VARIABLE output
   )

+ 1 - 1
Tests/QtAutogen/MocMacroName/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(MocMacroName)
 include("../AutogenCoreTest.cmake")
 

+ 1 - 1
Tests/QtAutogen/MocOnly/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(MocOnly)
 include("../AutogenCoreTest.cmake")
 

+ 1 - 1
Tests/QtAutogen/MocOptions/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(MocOptions)
 include("../AutogenCoreTest.cmake")
 

+ 3 - 3
Tests/QtAutogen/MocOsMacros/CMakeLists.txt

@@ -1,10 +1,10 @@
-cmake_minimum_required(VERSION 3.11)
+cmake_minimum_required(VERSION 3.16)
 project(MocOsMacros)
 include("../AutogenCoreTest.cmake")
 
 # Tests if moc processes Q_OS_XXX macros
 
-message( "Qt5Core_VERSION: ${Qt5Core_VERSION}" )
+message( "Qt${QT_TEST_VERSION}Core_VERSION: ${Qt${QT_TEST_VERSION}Core_VERSION}" )
 message(
   "CMAKE_CXX_COMPILER_PREDEFINES_COMMAND: "
   ${CMAKE_CXX_COMPILER_PREDEFINES_COMMAND} )
@@ -12,7 +12,7 @@ message(
 # On some platforms (e.g. MAC) Q_OS_XXX requires moc to include moc_predefs.h
 # which is supported since Qt 5.8 and requires
 # CMAKE_CXX_COMPILER_PREDEFINES_COMMAND to be defined.
-if( ( ${Qt5Core_VERSION} VERSION_GREATER_EQUAL "5.8" ) AND
+if( ( ${Qt${QT_TEST_VERSION}Core_VERSION} VERSION_GREATER_EQUAL "5.8" ) AND
   DEFINED CMAKE_CXX_COMPILER_PREDEFINES_COMMAND
 )
   message( "Test enabled!" )

+ 1 - 1
Tests/QtAutogen/MocSkipSource/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(MocSkipSource)
 include("../AutogenCoreTest.cmake")
 

+ 2 - 2
Tests/QtAutogen/ObjectLibrary/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(ObjectLibrary)
 include("../AutogenCoreTest.cmake")
 
@@ -11,7 +11,7 @@ add_subdirectory(a)
 # Object library b defined locally
 include_directories(b)
 add_library(b OBJECT b/classb.cpp)
-target_compile_features(b PRIVATE ${QT_COMPILE_FEATURES})
+target_link_libraries(b PRIVATE ${QT_LIBRARIES})
 
 # Executable with OBJECT library generator expressions
 add_executable(someProgram main.cpp $<TARGET_OBJECTS:a> $<TARGET_OBJECTS:b>)

+ 1 - 1
Tests/QtAutogen/ObjectLibrary/a/CMakeLists.txt

@@ -1,2 +1,2 @@
 add_library(a OBJECT classa.cpp)
-target_compile_features(a PRIVATE ${QT_COMPILE_FEATURES})
+target_link_libraries(a PRIVATE ${QT_LIBRARIES})

+ 1 - 1
Tests/QtAutogen/Parallel/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(Parallel)
 include("../AutogenGuiTest.cmake")
 

+ 1 - 1
Tests/QtAutogen/Parallel1/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(Parallel1)
 include("../AutogenGuiTest.cmake")
 

+ 1 - 1
Tests/QtAutogen/Parallel2/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(Parallel2)
 include("../AutogenGuiTest.cmake")
 

+ 1 - 1
Tests/QtAutogen/Parallel3/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(Parallel3)
 include("../AutogenGuiTest.cmake")
 

+ 1 - 1
Tests/QtAutogen/Parallel4/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(Parallel4)
 include("../AutogenGuiTest.cmake")
 

+ 1 - 1
Tests/QtAutogen/ParallelAUTO/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(ParallelAUTO)
 include("../AutogenGuiTest.cmake")
 

+ 1 - 1
Tests/QtAutogen/RccEmpty/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(RccEmpty)
 include("../AutogenCoreTest.cmake")
 

+ 3 - 5
Tests/QtAutogen/RccOffMocLibrary/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(RccOffMocLibrary)
 include("../AutogenCoreTest.cmake")
 
@@ -9,9 +9,7 @@ include("../AutogenCoreTest.cmake")
 add_library(empty STATIC empty.cpp not_generated_file.qrc)
 set_target_properties(empty PROPERTIES AUTORCC OFF)
 set_target_properties(empty PROPERTIES AUTOMOC TRUE)
-target_link_libraries(empty no_link_language)
+target_link_libraries(empty PRIVATE no_link_language ${QT_LIBRARIES})
 add_library(no_link_language STATIC empty.h)
 set_target_properties(no_link_language PROPERTIES AUTOMOC TRUE)
-# Pass Qt compiler features to targets that don't link against Qt
-target_compile_features(no_link_language PRIVATE ${QT_COMPILE_FEATURES})
-target_compile_features(empty PRIVATE ${QT_COMPILE_FEATURES})
+target_link_libraries(no_link_language PRIVATE ${QT_LIBRARIES})

+ 1 - 1
Tests/QtAutogen/RccOnly/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(RccOnly)
 include("../AutogenCoreTest.cmake")
 

+ 1 - 1
Tests/QtAutogen/RccSkipSource/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(RccSkipSource)
 include("../AutogenCoreTest.cmake")
 

+ 2 - 1
Tests/QtAutogen/RerunMocBasic/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(RerunMocBasic)
 include("../AutogenCoreTest.cmake")
 
@@ -63,6 +63,7 @@ execute_process(
           ${_D_CMAKE_GENERATOR_INSTANCE}
           "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
           "-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
+          "-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
           "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
   RESULT_VARIABLE exit_code
   OUTPUT_VARIABLE output

+ 1 - 1
Tests/QtAutogen/RerunMocBasic/MocBasic/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(MocBasic)
 include("../../AutogenCoreTest.cmake")
 

+ 2 - 1
Tests/QtAutogen/RerunMocOnAddFile/CMakeLists.txt

@@ -1,6 +1,6 @@
 # This test checks whether adding a source file to the project triggers an AUTOMOC re-run.
 
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(RerunMocOnAddFile)
 include("../AutogenCoreTest.cmake")
 
@@ -64,6 +64,7 @@ try_compile(MOC_RERUN
   MocOnAddFile
   CMAKE_FLAGS "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
               "-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
+              "-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
               "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
   OUTPUT_VARIABLE output
 )

+ 1 - 1
Tests/QtAutogen/RerunMocOnAddFile/MocOnAddFile/CMakeLists.txt.in

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(MocOnAddFile)
 include("@CMAKE_CURRENT_LIST_DIR@/../AutogenCoreTest.cmake")
 

+ 5 - 4
Tests/QtAutogen/RerunMocOnMissingDependency/CMakeLists.txt

@@ -1,6 +1,6 @@
 # This test checks whether a missing dependency of the moc output triggers an AUTOMOC re-run.
 
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(RerunMocOnMissingDependency)
 include("../AutogenCoreTest.cmake")
 
@@ -13,10 +13,10 @@ add_executable(exe "${main_source}")
 set(testProjectTemplateDir "${CMAKE_CURRENT_SOURCE_DIR}/MocOnMissingDependency")
 set(testProjectSrc "${CMAKE_CURRENT_BINARY_DIR}/MocOnMissingDependency")
 set(testProjectBinDir "${CMAKE_CURRENT_BINARY_DIR}/MocOnMissingDependency-build")
-if(DEFINED Qt5Core_VERSION AND Qt5Core_VERSION VERSION_GREATER_EQUAL "5.15.0")
-    set(moc_depfiles_supported TRUE)
+if(DEFINED Qt${QT_TEST_VERSION}Core_VERSION AND Qt${QT_TEST_VERSION}Core_VERSION VERSION_GREATER_EQUAL "5.15.0")
+  set(moc_depfiles_supported TRUE)
 else()
-    set(moc_depfiles_supported FALSE)
+  set(moc_depfiles_supported FALSE)
 endif()
 
 # Utility macros
@@ -48,6 +48,7 @@ try_compile(MOC_RERUN
   MocOnMissingDependency
   CMAKE_FLAGS "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
               "-DCMAKE_AUTOGEN_VERBOSE=ON"
+              "-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
               "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
   OUTPUT_VARIABLE output
 )

+ 2 - 1
Tests/QtAutogen/RerunMocPlugin/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(RerunMocPlugin)
 include("../AutogenCoreTest.cmake")
 
@@ -63,6 +63,7 @@ try_compile(MOC_PLUGIN
   MocPlugin
   CMAKE_FLAGS "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
               "-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
+              "-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
               "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
   OUTPUT_VARIABLE output
 )

+ 2 - 2
Tests/QtAutogen/RerunMocPlugin/MocPlugin/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(MocPlugin)
 include("../../AutogenGuiTest.cmake")
 
@@ -22,7 +22,7 @@ configure_file(jsonIn/StyleE.json jsonFiles/StyleE_Custom.json)
 set(CMAKE_AUTOMOC TRUE)
 
 include_directories("${CMAKE_CURRENT_BINARY_DIR}/jsonFiles")
-link_libraries(Qt5::Widgets)
+link_libraries(Qt${QT_TEST_VERSION}::Widgets)
 
 add_library(PlugA STATIC StyleA.cpp)
 add_library(PlugB STATIC StyleB.cpp)

+ 2 - 1
Tests/QtAutogen/RerunRccConfigChange/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.11.2)
+cmake_minimum_required(VERSION 3.16)
 project(RerunRccConfigChange)
 include("../AutogenCoreTest.cmake")
 
@@ -33,6 +33,7 @@ try_compile(RCC_DEPENDS
   RccConfigChange
   CMAKE_FLAGS "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
               "-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
+              "-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
               "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
   OUTPUT_VARIABLE output
 )

+ 1 - 1
Tests/QtAutogen/RerunRccConfigChange/RccConfigChange/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.11.2)
+cmake_minimum_required(VERSION 3.16)
 project(RccConfigChange)
 include("../../AutogenCoreTest.cmake")
 

+ 2 - 1
Tests/QtAutogen/RerunRccDepends/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(RerunRccDepends)
 include("../AutogenCoreTest.cmake")
 
@@ -66,6 +66,7 @@ try_compile(RCC_DEPENDS
   RccDepends
   CMAKE_FLAGS "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
               "-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
+              "-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
               "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
   OUTPUT_VARIABLE output
 )

+ 1 - 1
Tests/QtAutogen/RerunRccDepends/RccDepends/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(RccDepends)
 include("../../AutogenCoreTest.cmake")
 

+ 1 - 0
Tests/QtAutogen/RerunUicOnFileChange/CMakeLists.txt

@@ -66,6 +66,7 @@ execute_process(
           "${build_type_extra}"
           "-DQT_TEST_VERSION=${QT_TEST_VERSION}"
           "-DCMAKE_AUTOGEN_VERBOSE=${CMAKE_AUTOGEN_VERBOSE}"
+          "-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
           "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
   RESULT_VARIABLE exit_code
   OUTPUT_VARIABLE output

+ 1 - 1
Tests/QtAutogen/RerunUicOnFileChange/UicOnFileChange/CMakeLists.txt.in

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 
 project(UicOnFileChange)
 include("@CMAKE_CURRENT_LIST_DIR@/../AutogenGuiTest.cmake")

+ 1 - 1
Tests/QtAutogen/StaticLibraryCycle/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(StaticLibraryCycle)
 include("../AutogenCoreTest.cmake")
 

+ 10 - 1
Tests/QtAutogen/TestMacros.cmake

@@ -7,8 +7,17 @@ else()
 endif()
 list(APPEND Autogen_BUILD_OPTIONS
     "-DCMAKE_AUTOGEN_VERBOSE=1"
-    "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
 )
+if(Qt${QT_TEST_VERSION}Core_DIR)
+  get_filename_component(prefix "${Qt${QT_TEST_VERSION}Core_DIR}" DIRECTORY)
+  get_filename_component(prefix "${prefix}" DIRECTORY)
+  get_filename_component(prefix "${prefix}" DIRECTORY)
+  list(APPEND Autogen_BUILD_OPTIONS "-DCMAKE_PREFIX_PATH:STRING=${prefix}")
+else()
+  list(APPEND Autogen_BUILD_OPTIONS
+    "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}"
+  )
+endif()
 # XXX(xcode-per-cfg-src): Drop the NO_PER_CONFIG_SOURCES exclusion
 # when the Xcode generator supports per-config sources.
 if(CMAKE_GENERATOR STREQUAL "Xcode")

+ 1 - 1
Tests/QtAutogen/UicInclude/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(UicInclude)
 include("../AutogenGuiTest.cmake")
 

+ 3 - 3
Tests/QtAutogen/UicInterface/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(UicInterface)
 include("../AutogenGuiTest.cmake")
 
@@ -11,12 +11,12 @@ set(CMAKE_AUTOUIC ON)
 set(CMAKE_VERBOSE_MAKEFILE ON)
 
 add_library(KI18n klocalizedstring.cpp)
-target_link_libraries(KI18n ${QT_QTCORE_TARGET})
+target_link_libraries(KI18n PRIVATE ${QT_QTCORE_TARGET})
 
 set(autouic_options
   -tr tr2$<$<NOT:$<BOOL:$<TARGET_PROPERTY:NO_KUIT_SEMANTIC>>>:x>i18n
 )
-if (NOT Qt5Widgets_VERSION VERSION_LESS 5.3.0)
+if (NOT Qt${QT_TEST_VERSION}Widgets_VERSION VERSION_LESS 5.3.0)
   list(APPEND autouic_options -include klocalizedstring.h)
 endif()
 

+ 1 - 1
Tests/QtAutogen/UicNoGui/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.13)
+cmake_minimum_required(VERSION 3.16)
 project(UicNoGui)
 include("../AutogenCoreTest.cmake")
 

+ 1 - 1
Tests/QtAutogen/UicOnly/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(UicOnly)
 include("../AutogenGuiTest.cmake")
 

+ 1 - 1
Tests/QtAutogen/UicSkipSource/CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.16)
 project(UicSkipSource)
 include("../AutogenGuiTest.cmake")
 

+ 1 - 1
Tests/RunCMake/Autogen/CMP0111-imported-target-prelude.cmake

@@ -1,6 +1,6 @@
 enable_language(CXX)
 
-find_package(Qt5 REQUIRED COMPONENTS Core)
+find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core)
 
 # Detect `-NOTFOUND` libraries at generate time.
 cmake_policy(SET CMP0111 NEW)

+ 1 - 1
Tests/RunCMake/Autogen/CMakeLists.txt

@@ -1,3 +1,3 @@
-cmake_minimum_required(VERSION 3.13)
+cmake_minimum_required(VERSION 3.16)
 project(${RunCMake_TEST} NONE)
 include(${RunCMake_TEST}.cmake)

+ 3 - 3
Tests/RunCMake/Autogen/QtInFunction.cmake

@@ -1,9 +1,9 @@
 enable_language(CXX)
 
 function (use_autogen target)
-  find_package(Qt5 REQUIRED COMPONENTS Core Widgets)
-  set(Qt5Core_VERSION_MAJOR "${Qt5Core_VERSION_MAJOR}" PARENT_SCOPE)
-  set(Qt5Core_VERSION_MINOR "${Qt5Core_VERSION_MINOR}" PARENT_SCOPE)
+  find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets)
+  set(Qt${with_qt_version}Core_VERSION_MAJOR "${Qt${with_qt_version}Core_VERSION_MAJOR}" PARENT_SCOPE)
+  set(Qt${with_qt_version}Core_VERSION_MINOR "${Qt${with_qt_version}Core_VERSION_MINOR}" PARENT_SCOPE)
   set_property(TARGET "${target}" PROPERTY AUTOMOC 1)
   set_property(TARGET "${target}" PROPERTY AUTORCC 1)
   set_property(TARGET "${target}" PROPERTY AUTOUIC 1)

+ 3 - 3
Tests/RunCMake/Autogen/QtInFunctionNested.cmake

@@ -1,9 +1,9 @@
 enable_language(CXX)
 
 function (use_autogen target)
-  find_package(Qt5 REQUIRED COMPONENTS Core Widgets)
-  set(Qt5Core_VERSION_MAJOR "${Qt5Core_VERSION_MAJOR}" PARENT_SCOPE)
-  set(Qt5Core_VERSION_MINOR "${Qt5Core_VERSION_MINOR}" PARENT_SCOPE)
+  find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets)
+  set(Qt${with_qt_version}Core_VERSION_MAJOR "${Qt${with_qt_version}Core_VERSION_MAJOR}" PARENT_SCOPE)
+  set(Qt${with_qt_version}Core_VERSION_MINOR "${Qt${with_qt_version}Core_VERSION_MINOR}" PARENT_SCOPE)
   set_property(TARGET "${target}" PROPERTY AUTOMOC 1)
   set_property(TARGET "${target}" PROPERTY AUTORCC 1)
   set_property(TARGET "${target}" PROPERTY AUTOUIC 1)

+ 3 - 3
Tests/RunCMake/Autogen/QtInFunctionProperty.cmake

@@ -1,13 +1,13 @@
 enable_language(CXX)
 
 function (use_autogen target)
-  find_package(Qt5 REQUIRED COMPONENTS Core Widgets)
+  find_package(Qt${with_qt_version} REQUIRED COMPONENTS Core Widgets)
   set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
     PROPERTY
-      Qt5Core_VERSION_MAJOR "${Qt5Core_VERSION_MAJOR}")
+      Qt${with_qt_version}Core_VERSION_MAJOR "${Qt${with_qt_version}Core_VERSION_MAJOR}")
   set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
     PROPERTY
-      Qt5Core_VERSION_MINOR "${Qt5Core_VERSION_MINOR}")
+      Qt${with_qt_version}Core_VERSION_MINOR "${Qt${with_qt_version}Core_VERSION_MINOR}")
   set_property(TARGET "${target}" PROPERTY AUTOMOC 1)
   set_property(TARGET "${target}" PROPERTY AUTORCC 1)
   set_property(TARGET "${target}" PROPERTY AUTOUIC 1)

+ 7 - 1
Tests/RunCMake/Autogen/RunCMakeTest.cmake

@@ -1,7 +1,13 @@
 include(RunCMake)
 
 run_cmake(NoQt)
-if (with_qt5)
+if (DEFINED with_qt_version)
+  set(RunCMake_TEST_OPTIONS
+    -Dwith_qt_version=${with_qt_version}
+    "-DQt${with_qt_version}_DIR:PATH=${Qt${with_qt_version}_DIR}"
+    "-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
+  )
+
   run_cmake(QtInFunction)
   run_cmake(QtInFunctionNested)
   run_cmake(QtInFunctionProperty)

+ 53 - 11
Tests/RunCMake/CMakeLists.txt

@@ -151,8 +151,23 @@ endif()
 if(CMAKE_GENERATOR MATCHES "Make")
   add_RunCMake_test(Make -DMAKE_IS_GNU=${MAKE_IS_GNU})
 endif()
-if(CMake_TEST_Qt5)
+unset(ninja_test_with_qt_version)
+unset(ninja_qt_args)
+if(CMake_TEST_Qt6)
+  find_package(Qt6Widgets QUIET NO_MODULE)
+  if(Qt6Widgets_FOUND)
+    set(ninja_test_with_qt_version 6)
+    # Work around Qt6 not finding sibling dependencies without CMAKE_PREFIX_PATH
+    cmake_path(GET Qt6_DIR  PARENT_PATH base_dir)  # <base>/lib/cmake
+    cmake_path(GET base_dir PARENT_PATH base_dir)  # <base>/lib
+    cmake_path(GET base_dir PARENT_PATH base_dir)  # <base>
+    set(ninja_qt_args -DCMAKE_PREFIX_PATH=${base_dir})
+  endif()
+elseif(CMake_TEST_Qt5)
   find_package(Qt5Widgets QUIET NO_MODULE)
+  if(Qt5Widgets_FOUND)
+    set(ninja_test_with_qt_version 5)
+  endif()
 endif()
 if(CMAKE_GENERATOR MATCHES "Ninja")
   set(Ninja_ARGS
@@ -162,18 +177,27 @@ if(CMAKE_GENERATOR MATCHES "Ninja")
   if(CMAKE_Fortran_COMPILER)
     list(APPEND Ninja_ARGS -DTEST_Fortran=1)
   endif()
-  if(CMake_TEST_Qt5 AND Qt5Core_FOUND)
-    list(APPEND Ninja_ARGS -DCMake_TEST_Qt5=1 -DQt5Core_DIR=${Qt5Core_DIR} -DCMAKE_TEST_Qt5Core_Version=${Qt5Core_VERSION})
-    if(Qt5Widgets_FOUND)
-      list(APPEND Ninja_ARGS -DQt5Widgets_DIR=${Qt5Widgets_DIR})
-    endif()
+  if(ninja_test_with_qt_version)
+    list(APPEND Ninja_ARGS
+      -DCMake_TEST_Qt_version=${ninja_test_with_qt_version}
+      -DQt${ninja_test_with_qt_version}_DIR=${Qt${ninja_test_with_qt_version}_DIR}
+      -DQt${ninja_test_with_qt_version}Core_DIR=${Qt${ninja_test_with_qt_version}Core_DIR}
+      -DCMake_TEST_Qt${ninja_test_with_qt_version}Core_Version=${Qt${ninja_test_with_qt_version}Core_VERSION}
+      -DQt${ninja_test_with_qt_version}Widgets_DIR=${Qt${ninja_test_with_qt_version}Widgets_DIR}
+      ${ninja_qt_args}
+    )
   endif()
   add_RunCMake_test(Ninja)
   set(NinjaMultiConfig_ARGS
     -DCYGWIN=${CYGWIN} -DMSYS=${MSYS}
     )
-  if(CMake_TEST_Qt5 AND Qt5Core_FOUND)
-    list(APPEND NinjaMultiConfig_ARGS -DCMake_TEST_Qt5=1 -DQt5Core_DIR=${Qt5Core_DIR} -DCMAKE_TEST_Qt5Core_Version=${Qt5Core_VERSION})
+  if(ninja_test_with_qt_version)
+    list(APPEND NinjaMultiConfig_ARGS
+      -DCMake_TEST_Qt_version=${ninja_test_with_qt_version}
+      -DQt${ninja_test_with_qt_version}Core_DIR=${Qt${ninja_test_with_qt_version}Core_DIR}
+      -DCMake_TEST_Qt${ninja_test_with_qt_version}Core_Version=${Qt${ninja_test_with_qt_version}Core_VERSION}
+      ${ninja_qt_args}
+    )
   endif()
   if(DEFINED CMake_TEST_CUDA)
     list(APPEND NinjaMultiConfig_ARGS -DCMake_TEST_CUDA=${CMake_TEST_CUDA})
@@ -205,11 +229,29 @@ add_RunCMake_test(AndroidTestUtilities)
 if(CMake_TEST_APPLE_SILICON)
   add_RunCMake_test(AppleSilicon)
 endif()
-set(autogen_with_qt5 FALSE)
+set(want_NoQt_test TRUE)
+if(CMake_TEST_Qt6 AND Qt6Widgets_FOUND)
+  # Work around Qt6 not finding sibling dependencies without CMAKE_PREFIX_PATH
+  cmake_path(GET Qt6_DIR  PARENT_PATH base_dir)  # <base>/lib/cmake
+  cmake_path(GET base_dir PARENT_PATH base_dir)  # <base>/lib
+  cmake_path(GET base_dir PARENT_PATH base_dir)  # <base>
+  add_RunCMake_test(AutogenQt6 TEST_DIR Autogen
+    -Dwith_qt_version=6
+    "-DQt6_DIR:PATH=${Qt6_DIR}"
+    "-DCMAKE_PREFIX_PATH:STRING=${base_dir}"
+  )
+  set(want_NoQt_test FALSE)
+endif ()
 if(CMake_TEST_Qt5 AND Qt5Widgets_FOUND)
-  set(autogen_with_qt5 TRUE)
+  add_RunCMake_test(AutogenQt5 TEST_DIR Autogen
+    -Dwith_qt_version=5
+    "-DQt5_DIR:PATH=${Qt5_DIR}"
+  )
+  set(want_NoQt_test FALSE)
 endif ()
-add_RunCMake_test(Autogen -Dwith_qt5=${autogen_with_qt5})
+if(want_NoQt_test)
+  add_RunCMake_test(AutogenNoQt TEST_DIR Autogen)
+endif()
 
 add_RunCMake_test(ArtifactOutputDirs)
 

+ 0 - 21
Tests/RunCMake/Ninja/Qt5AutoMocDeps.cmake

@@ -1,21 +0,0 @@
-enable_language(CXX)
-
-find_package(Qt5Core REQUIRED)
-
-set(CMAKE_AUTOMOC ON)
-
-add_library(simple_lib SHARED simple_lib.cpp)
-add_executable(app_with_qt app.cpp app_qt.cpp)
-target_link_libraries(app_with_qt PRIVATE simple_lib Qt5::Core)
-
-if(Qt5Widgets_DIR)
-  find_package(Qt5Widgets REQUIRED)
-  qt5_wrap_ui(_headers MyWindow.ui)
-  add_executable(app_with_widget app.cpp MyWindow.cpp ${_headers})
-  target_link_libraries(app_with_widget PRIVATE Qt5::Widgets)
-  target_include_directories(app_with_widget PRIVATE "${CMAKE_BINARY_DIR}")
-endif()
-
-add_subdirectory(QtSubDir1)
-add_subdirectory(QtSubDir2)
-add_subdirectory(QtSubDir3)

+ 27 - 0
Tests/RunCMake/Ninja/QtAutoMocDeps.cmake

@@ -0,0 +1,27 @@
+enable_language(CXX)
+
+set(QtX Qt${with_qt_version})
+
+find_package(${QtX} REQUIRED COMPONENTS Core)
+
+set(CMAKE_AUTOMOC ON)
+
+add_library(simple_lib SHARED simple_lib.cpp)
+add_executable(app_with_qt app.cpp app_qt.cpp)
+target_link_libraries(app_with_qt PRIVATE simple_lib ${QtX}::Core)
+
+if(${QtX}Widgets_DIR)
+  find_package(${QtX} REQUIRED COMPONENTS Widgets)
+  if(with_qt_version STREQUAL 5)
+    qt5_wrap_ui(_headers MyWindow.ui)
+  else()
+    qt_wrap_ui(_headers MyWindow.ui)
+  endif()
+  add_executable(app_with_widget app.cpp MyWindow.cpp ${_headers})
+  target_link_libraries(app_with_widget PRIVATE ${QtX}::Widgets)
+  target_include_directories(app_with_widget PRIVATE "${CMAKE_BINARY_DIR}")
+endif()
+
+add_subdirectory(QtSubDir1)
+add_subdirectory(QtSubDir2)
+add_subdirectory(QtSubDir3)

+ 1 - 1
Tests/RunCMake/Ninja/QtSubDir1/CMakeLists.txt

@@ -1,4 +1,4 @@
 cmake_policy(SET CMP0116 OLD)
 
 add_executable(sub_exe_1 ../app.cpp)
-target_link_libraries(sub_exe_1 PRIVATE Qt5::Core)
+target_link_libraries(sub_exe_1 PRIVATE ${QtX}::Core)

+ 1 - 1
Tests/RunCMake/Ninja/QtSubDir2/CMakeLists.txt

@@ -1,4 +1,4 @@
 cmake_policy(SET CMP0116 NEW)
 
 add_executable(sub_exe_2 ../app.cpp)
-target_link_libraries(sub_exe_2 PRIVATE Qt5::Core)
+target_link_libraries(sub_exe_2 PRIVATE ${QtX}::Core)

+ 1 - 1
Tests/RunCMake/Ninja/QtSubDir3/CMakeLists.txt

@@ -1,2 +1,2 @@
 add_executable(sub_exe_3 ../app.cpp)
-target_link_libraries(sub_exe_3 PRIVATE Qt5::Core)
+target_link_libraries(sub_exe_3 PRIVATE ${QtX}::Core)

+ 14 - 7
Tests/RunCMake/Ninja/RunCMakeTest.cmake

@@ -319,12 +319,17 @@ function (run_ChangeBuildType)
 endfunction()
 run_ChangeBuildType()
 
-function(run_Qt5AutoMocDeps)
-  if(CMake_TEST_Qt5 AND CMAKE_TEST_Qt5Core_Version VERSION_GREATER_EQUAL 5.15.0)
-    set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Qt5AutoMocDeps-build)
-    set(RunCMake_TEST_OPTIONS "-DQt5Core_DIR=${Qt5Core_DIR}" "-DQt5Widgets_DIR=${Qt5Widgets_DIR}")
-    run_cmake(Qt5AutoMocDeps)
-    unset(RunCMake_TEST_OPTIONS)
+function(run_QtAutoMocDeps)
+  set(QtX Qt${CMake_TEST_Qt_version})
+  if(CMake_TEST_${QtX}Core_Version VERSION_GREATER_EQUAL 5.15.0)
+    set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/QtAutoMocDeps-build)
+    run_cmake_with_options(QtAutoMocDeps
+      "-Dwith_qt_version=${CMake_TEST_Qt_version}"
+      "-D${QtX}_DIR=${${QtX}_DIR}"
+      "-D${QtX}Core_DIR=${${QtX}Core_DIR}"
+      "-D${QtX}Widgets_DIR=${${QtX}Widgets_DIR}"
+      "-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
+    )
     # Build the project.
     run_ninja("${RunCMake_TEST_BINARY_DIR}")
     # Touch just the library source file, which shouldn't cause a rerun of AUTOMOC
@@ -352,4 +357,6 @@ function(run_Qt5AutoMocDeps)
     run_ninja("${RunCMake_TEST_BINARY_DIR}")
   endif()
 endfunction()
-run_Qt5AutoMocDeps()
+if(CMake_TEST_Qt_version)
+  run_QtAutoMocDeps()
+endif()

+ 0 - 0
Tests/RunCMake/NinjaMultiConfig/Qt5-automoc-check-ninja-stdout.txt → Tests/RunCMake/NinjaMultiConfig/QtX-automoc-check-ninja-stdout.txt


+ 0 - 0
Tests/RunCMake/NinjaMultiConfig/Qt5-debug-in-release-graph-build-check.cmake → Tests/RunCMake/NinjaMultiConfig/QtX-debug-in-release-graph-build-check.cmake


+ 6 - 3
Tests/RunCMake/NinjaMultiConfig/Qt5.cmake → Tests/RunCMake/NinjaMultiConfig/QtX.cmake

@@ -1,18 +1,21 @@
 enable_language(CXX)
 
-find_package(Qt5Core REQUIRED)
+set(QtX Qt${with_qt_version})
+
+find_package(${QtX} REQUIRED COMPONENTS Core)
 
 set(CMAKE_AUTOMOC ON)
 set(CMAKE_AUTOMOC_COMPILER_PREDEFINES OFF)
 
+# Source files are always named qt5.* for simplicity but apply to Qt5 and later
 add_executable(exe qt5.cxx)
-target_link_libraries(exe PRIVATE Qt5::Core)
+target_link_libraries(exe PRIVATE ${QtX}::Core)
 
 include(${CMAKE_CURRENT_LIST_DIR}/Common.cmake)
 generate_output_files(exe)
 
 set(moc_writes_depfiles 0)
-if(Qt5Core_VERSION VERSION_GREATER_EQUAL "5.15.0")
+if(${QtX}Core_VERSION VERSION_GREATER_EQUAL "5.15.0")
   set(moc_writes_depfiles 1)
 endif()
 

+ 13 - 7
Tests/RunCMake/NinjaMultiConfig/RunCMakeTest.cmake

@@ -446,14 +446,20 @@ if(CMake_TEST_CUDA AND NOT CMake_TEST_CUDA STREQUAL "Clang")
   run_ninja(CudaSimple all-clean build-Debug.ninja clean:Debug)
 endif()
 
-if(CMake_TEST_Qt5)
-  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Qt5-build)
-  set(RunCMake_TEST_OPTIONS "-DCMAKE_CROSS_CONFIGS=all" "-DQt5Core_DIR=${Qt5Core_DIR}")
-  run_cmake_configure(Qt5)
+if(CMake_TEST_Qt_version)
+  set(QtX Qt${CMake_TEST_Qt_version})
+  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/QtX-build)
+  set(RunCMake_TEST_OPTIONS
+    "-DCMAKE_CROSS_CONFIGS=all"
+    "-Dwith_qt_version:STRING=${CMake_TEST_Qt_version}"
+    "-D${QtX}Core_DIR=${${QtX}Core_DIR}"
+    "-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
+  )
+  run_cmake_configure(QtX)
   unset(RunCMake_TEST_OPTIONS)
   include(${RunCMake_TEST_BINARY_DIR}/target_files.cmake)
-  run_cmake_build(Qt5 debug-in-release-graph Release exe:Debug)
-  if(CMAKE_TEST_Qt5Core_Version VERSION_GREATER_EQUAL 5.15.0)
-    run_ninja(Qt5 automoc-check build-Debug.ninja -t query exe_autogen/timestamp)
+  run_cmake_build(QtX debug-in-release-graph Release exe:Debug)
+  if(CMake_TEST_${QtX}Core_Version VERSION_GREATER_EQUAL 5.15.0)
+    run_ninja(QtX automoc-check build-Debug.ninja -t query exe_autogen/timestamp)
   endif()
 endif()