# Qt6 only - no Qt5 fallback find_package(Qt6 COMPONENTS Core Gui PrintSupport Sql Svg Widgets Xml QUIET) if(NOT Qt6_FOUND) set(KDReports_FOUND FALSE) return() endif() set(_qt_prefix "Qt6") # Prefer KDReports-qt6 package config if installed under standard prefixes # Search in common installation locations for KDReports cmake config list(APPEND CMAKE_PREFIX_PATH /usr/local /usr) find_package(KDReports-qt6 CONFIG QUIET PATHS /usr/local/lib/cmake/KDReports-qt6 /usr/local/lib64/cmake/KDReports-qt6 /usr/lib/cmake/KDReports-qt6 /usr/lib64/cmake/KDReports-qt6) if(KDReports-qt6_FOUND OR KDReports-qt6_CONFIG) message(STATUS "Found KDReports-qt6 package config") set(KDREPORTS_FOUND TRUE) set(KDReports_FOUND TRUE) # KDReports-qt6 config provides KDReports::KDReports imported target # Set variables for compatibility with code that uses them set(KDREPORTS_INCLUDE_DIR "/usr/local/include/KDReports-qt6") set(KDREPORTS_KDREPORTS_INCLUDE_DIR "/usr/local/include/KDReports-qt6") # Check lib64 first, then lib if(EXISTS "/usr/local/lib64/libkdreports-qt6.so") set(KDREPORTS_LIBRARY "/usr/local/lib64/libkdreports-qt6.so") else() set(KDREPORTS_LIBRARY "/usr/local/lib/libkdreports-qt6.so") endif() else() # Search both /usr and /usr/local for apt-installed or manually built KDReports FIND_PATH(KDREPORTS_INCLUDE_DIR KDReports/KDReports.h PATHS /usr/include /usr/local/include) FIND_PATH(KDREPORTS_KDREPORTS_INCLUDE_DIR KDReports.h PATH_SUFFIXES KDReports PATHS /usr/include /usr/local/include) FIND_LIBRARY(KDREPORTS_LIBRARY NAMES kdreports kdreport kdreports-qt6 PATHS /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64) 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() # The root CMakeLists may already have created a no-op stub target for # KDReports::KDReports (before FindKDReports ran). When the library was found, # upgrade that existing target to the real imported target instead of skipping. IF(KDReports_FOUND) IF(NOT TARGET KDReports::KDReports) ADD_LIBRARY(KDReports::KDReports UNKNOWN IMPORTED) ENDIF() 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 PROPERTY INTERFACE_COMPILE_DEFINITIONS "") SET_PROPERTY(TARGET KDReports::KDReports APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${_qt_prefix}::Core ${_qt_prefix}::Gui ${_qt_prefix}::PrintSupport ${_qt_prefix}::Widgets) # KDReports headers use Qt5-style bare includes (#include , ...). In Qt6 # the forwarding headers live in /include/QtPrintSupport. The Qt6::PrintSupport # target may resolve to a no-include stub in this build, so expose the module include # dir directly to guarantee the bare include resolves for every KDReports consumer. SET(_kd_qt6_prefix "") IF(DEFINED Qt6_DIR AND EXISTS "${Qt6_DIR}") GET_FILENAME_COMPONENT(_kd_qt6_prefix "${Qt6_DIR}/../../.." ABSOLUTE) ENDIF() SET(_kd_printsupport_inc "") IF(_kd_qt6_prefix AND EXISTS "${_kd_qt6_prefix}/include/QtPrintSupport") SET(_kd_printsupport_inc "${_kd_qt6_prefix}/include/QtPrintSupport") ELSE() FIND_PATH(_kd_printsupport_inc QPrinter PATHS /usr/include/x86_64-linux-gnu/qt6/QtPrintSupport /usr/include/qt6/QtPrintSupport NO_DEFAULT_PATH) ENDIF() IF(_kd_printsupport_inc AND NOT _kd_printsupport_inc-NOTFOUND) SET_PROPERTY(TARGET KDReports::KDReports APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${_kd_printsupport_inc}") MESSAGE(STATUS "KDReports: exposing Qt6 QtPrintSupport include dir: ${_kd_printsupport_inc}") ENDIF() ELSE() IF(NOT TARGET KDReports::KDReports) ADD_LIBRARY(KDReports::KDReports UNKNOWN IMPORTED) ENDIF() ENDIF()