summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/CMakeLists.txt
diff options
context:
space:
mode:
authorCraig Scott <craig.scott@crascit.com>2021-10-04 11:10:56 (GMT)
committerCraig Scott <craig.scott@crascit.com>2021-10-04 11:10:57 (GMT)
commita7420884723c4fb09e6370fb25710a2172c10a0c (patch)
tree7d1d5cd434ca27e8b038457c784bf08af7f36c2f /Tests/RunCMake/CMakeLists.txt
parentb3a0bddc4e1c8f1f86078cdffaebbc4c493e4409 (diff)
downloadCMake-a7420884723c4fb09e6370fb25710a2172c10a0c.zip
CMake-a7420884723c4fb09e6370fb25710a2172c10a0c.tar.gz
CMake-a7420884723c4fb09e6370fb25710a2172c10a0c.tar.bz2
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
Diffstat (limited to 'Tests/RunCMake/CMakeLists.txt')
-rw-r--r--Tests/RunCMake/CMakeLists.txt64
1 files changed, 53 insertions, 11 deletions
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index eb2c2d9..3baa645 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/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)