if(POPPLER_QT5_INCLUDE_DIR AND POPPLER_QT5_LIBRARY) set(POPPLER_QT5_FOUND TRUE) else(POPPLER_QT5_INCLUDE_DIR AND POPPLER_QT5_LIBRARY) set(_poppler_version_bad FALSE) if(NOT WIN32) include(FindPkgConfig) # Prefer poppler-qt6 if available, fall back to poppler-qt5 pkg_check_modules(_pc_poppler poppler-qt6) if(_pc_poppler_FOUND) set(_pc_poppler_pkgname poppler-qt6) else() pkg_check_modules(_pc_poppler poppler-qt5) if(_pc_poppler_FOUND) set(_pc_poppler_pkgname poppler-qt5) endif() endif() if(_pc_poppler_FOUND) if(NOT "${_pc_poppler_VERSION}" VERSION_GREATER 0.24.0) set(_poppler_version_bad TRUE) endif(NOT "${_pc_poppler_VERSION}" VERSION_GREATER 0.24.0) endif(_pc_poppler_FOUND) endif(NOT WIN32) if(NOT _poppler_version_bad) set(POPPLER_QT5_FOUND FALSE) # try library name discovered by pkg-config (poppler-qt6 or poppler-qt5) find_library(POPPLER_QT5_LIBRARY ${_pc_poppler_pkgname} HINTS ${_pc_poppler_LIBRARY_DIRS} ) # check for headers for both qt5 and qt6 layouts find_path(POPPLER_QT5_INCLUDE_DIR poppler-qt6.h poppler-qt5.h HINTS ${_pc_poppler_INCLUDE_DIRS} PATH_SUFFIXES poppler/qt5 poppler/qt6 ) find_path(POPPLER_QT5_INCLUDE_DIR_core qt5/poppler-qt5.h qt6/poppler-qt6.h HINTS ${_pc_poppler_INCLUDE_DIRS} PATH_SUFFIXES poppler ) if(POPPLER_QT5_LIBRARY AND POPPLER_QT5_INCLUDE_DIR AND POPPLER_QT5_INCLUDE_DIR_core) list(APPEND POPPLER_QT5_INCLUDE_DIR "${POPPLER_QT5_INCLUDE_DIR_core}") set(POPPLER_QT5_FOUND TRUE) endif(POPPLER_QT5_LIBRARY AND POPPLER_QT5_INCLUDE_DIR AND POPPLER_QT5_INCLUDE_DIR_core) endif(NOT _poppler_version_bad) if(POPPLER_QT5_LIBRARY AND POPPLER_QT5_INCLUDE_DIR) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(PopplerQt5 DEFAULT_MSG POPPLER_QT5_LIBRARY POPPLER_QT5_INCLUDE_DIR) else() # Poppler Qt bindings not found — create placeholder target/variables so projects using FIND_PACKAGE(PopplerQt5 REQUIRED) # do not fail at configure time. Real functionality will require installing poppler-qt6 or updating code. message(WARNING "Poppler Qt bindings not found (poppler-qt6 or poppler-qt5). Creating placeholder PopplerQt5::Poppler target to allow configure.") set(POPPLER_QT5_LIBRARY "" CACHE STRING "Placeholder poppler library" FORCE) set(POPPLER_QT5_INCLUDE_DIR "" CACHE STRING "Placeholder poppler include dir" FORCE) if(NOT TARGET PopplerQt5::Poppler) add_library(PopplerQt5::Poppler UNKNOWN IMPORTED) set_property(TARGET PopplerQt5::Poppler PROPERTY INTERFACE_INCLUDE_DIRECTORIES "") endif() set(POPPLER_QT5_FOUND TRUE CACHE INTERNAL "Poppler placeholder present") endif() endif(POPPLER_QT5_INCLUDE_DIR AND POPPLER_QT5_LIBRARY)