From ba70f394f3b154371e4e2519858ac5fa8634a5fd Mon Sep 17 00:00:00 2001 From: Robert Haschke Date: Thu, 1 Feb 2024 22:47:34 +0100 Subject: [PATCH] Allow specifying an order of Qt versions to consider --- CMakeLists.txt | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8abd88a00..bbd4bc75e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,14 +105,24 @@ find_package(OpenGL REQUIRED) set(CMAKE_AUTOMOC ON) -find_package(Qt6 COMPONENTS Core Widgets OpenGL) -if (NOT Qt6_FOUND) - find_package(Qt5 COMPONENTS Core Widgets OpenGL) - set(QTVERSION ${Qt5_VERSION}) - set(QT_LIBRARIES Qt5::Widgets) -else() - set(QTVERSION ${Qt6_VERSION}) - set(QT_LIBRARIES Qt6::Widgets) +set(RVIZ_QT_VERSIONS "5;6" CACHE STRING "List of Qt versions to consider (in order)") +set(_versions_list ${RVIZ_QT_VERSIONS}) +while(_versions_list) + # Pop first element from list _versions_list + list(GET _versions_list 0 _current_version) + list(REMOVE_AT _versions_list 0) + # Try to find this Qt version + find_package(Qt${_current_version} QUIET COMPONENTS Core Widgets OpenGL) + if (Qt${_current_version}_FOUND) + set(QTVERSION ${Qt${_current_version}_VERSION}) + set(QT_LIBRARIES Qt${_current_version}::Widgets) + set(_versions_list) # break from while loop + else() + message(WARNING "Qt${_current_version} not found.") + endif() +endwhile() +if(NOT QTVERSION) + message(FATAL_ERROR "Failed to find a suitable Qt version.") endif() message(STATUS "Found Qt ${QTVERSION}") add_definitions(-DQT_NO_KEYWORDS)