From 398c1fe981c51cf5bb910db6edaa2b02cb947767 Mon Sep 17 00:00:00 2001 From: Torsten Wierschin Date: Fri, 17 Jul 2026 15:28:16 +0200 Subject: [PATCH] cmake: extend FindKDReports to detect KDReports-qt6 installed under /usr/local and provide imported target shim --- cmake/FindKDReports.cmake | 85 +++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 47 deletions(-) diff --git a/cmake/FindKDReports.cmake b/cmake/FindKDReports.cmake index 7bd46c082..f12914129 100755 --- a/cmake/FindKDReports.cmake +++ b/cmake/FindKDReports.cmake @@ -1,25 +1,5 @@ - - - - - - - - - - - - - - - - - - - - # Prefer Qt6 when available, fallback to Qt5 find_package(Qt6 COMPONENTS Core Gui PrintSupport Sql Svg Widgets Xml QUIET) if(NOT Qt6_FOUND) @@ -27,30 +7,41 @@ if(NOT Qt6_FOUND) set(_qt_prefix "Qt5") else() set(_qt_prefix "Qt6") -endif() -IF(KDREPORTS_INCLUDE_DIR AND KDREPORTS_KDREPORTS_INCLUDE_DIR AND KDREPORTS_LIBRARY) - SET(KDREPORTS_FOUND TRUE) -ELSE() - - FIND_PATH(KDREPORTS_INCLUDE_DIR KDReports/KDReports.h) - FIND_PATH(KDREPORTS_KDREPORTS_INCLUDE_DIR KDReports.h PATH_SUFFIXES KDReports) - FIND_LIBRARY(KDREPORTS_LIBRARY NAMES kdreports) - - INCLUDE(FindPackageHandleStandardArgs) - FIND_PACKAGE_HANDLE_STANDARD_ARGS(KDReports DEFAULT_MSG - KDREPORTS_LIBRARY - KDREPORTS_INCLUDE_DIR - KDREPORTS_KDREPORTS_INCLUDE_DIR - ) - - MARK_AS_ADVANCED(KDREPORTS_INCLUDE_DIR KDREPORTS_LIBRARY) - MARK_AS_ADVANCED(KDREPORTS_KDREPORTS_INCLUDE_DIR KDREPORTS_LIBRARY) -ENDIF() - -IF(NOT TARGET KDReports::KDReports) - ADD_LIBRARY(KDReports::KDReports UNKNOWN IMPORTED) - SET_PROPERTY(TARGET KDReports::KDReports PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${KDREPORTS_INCLUDE_DIR}" "${KDREPORTS_KDREPORTS_INCLUDE_DIR}") - SET_PROPERTY(TARGET KDReports::KDReports PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${KDREPORTS_INCLUDE_DIR}" "${KDREPORTS_KDREPORTS_INCLUDE_DIR}") - SET_PROPERTY(TARGET KDReports::KDReports PROPERTY IMPORTED_LOCATION "${KDREPORTS_LIBRARY}") - SET_PROPERTY(TARGET KDReports::KDReports APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${_qt_prefix}::Core ${_qt_prefix}::Gui ${_qt_prefix}::PrintSupport ${_qt_prefix}::Widgets) -ENDIF() +endif() + +# If KDReports already provided via variables, use them +IF(KDREPORTS_INCLUDE_DIR AND KDREPORTS_KDREPORTS_INCLUDE_DIR AND KDREPORTS_LIBRARY) + SET(KDREPORTS_FOUND TRUE) +ELSE() + # Prefer KDReports-qt6 package config if installed under standard prefixes + if(EXISTS "${CMAKE_PREFIX_PATH}/lib/cmake/KDReports-qt6" OR EXISTS "/usr/local/lib/cmake/KDReports-qt6") + message(STATUS "Found KDReports-qt6 package config in CMAKE_PREFIX_PATH or /usr/local") + set(KDREPORTS_FOUND TRUE) + # Best-effort defaults; specific projects will use the imported target below + set(KDREPORTS_INCLUDE_DIR "/usr/local/include") + set(KDREPORTS_KDREPORTS_INCLUDE_DIR "/usr/local/include") + set(KDREPORTS_LIBRARY "/usr/local/lib/libkdreports-qt6.so") + else() + FIND_PATH(KDREPORTS_INCLUDE_DIR KDReports/KDReports.h) + FIND_PATH(KDREPORTS_KDREPORTS_INCLUDE_DIR KDReports.h PATH_SUFFIXES KDReports) + FIND_LIBRARY(KDREPORTS_LIBRARY NAMES kdreports kdreport kdreports-qt6) + + INCLUDE(FindPackageHandleStandardArgs) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(KDReports DEFAULT_MSG + KDREPORTS_LIBRARY + KDREPORTS_INCLUDE_DIR + KDREPORTS_KDREPORTS_INCLUDE_DIR + ) + + MARK_AS_ADVANCED(KDREPORTS_INCLUDE_DIR KDREPORTS_LIBRARY) + MARK_AS_ADVANCED(KDREPORTS_KDREPORTS_INCLUDE_DIR KDREPORTS_LIBRARY) + endif() +ENDIF() + +IF(NOT TARGET KDReports::KDReports) + ADD_LIBRARY(KDReports::KDReports UNKNOWN IMPORTED) + SET_PROPERTY(TARGET KDReports::KDReports PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${KDREPORTS_INCLUDE_DIR}" "${KDREPORTS_KDREPORTS_INCLUDE_DIR}") + SET_PROPERTY(TARGET KDReports::KDReports PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${KDREPORTS_INCLUDE_DIR}" "${KDREPORTS_KDREPORTS_INCLUDE_DIR}") + SET_PROPERTY(TARGET KDReports::KDReports PROPERTY IMPORTED_LOCATION "${KDREPORTS_LIBRARY}") + SET_PROPERTY(TARGET KDReports::KDReports APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${_qt_prefix}::Core ${_qt_prefix}::Gui ${_qt_prefix}::PrintSupport ${_qt_prefix}::Widgets) +ENDIF()