From 0fc0d282ac87f75e6848f76c32dc4feeb5dce244 Mon Sep 17 00:00:00 2001 From: Jakub Melka Date: Sun, 1 Jun 2025 18:40:58 +0200 Subject: [PATCH] Issue #281: install API headers for reuse by other applications ? --- CMakeLists.txt | 52 +++++++++++++++++++++--------------- Pdf4QtLibCore/CMakeLists.txt | 2 +- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 643ca2a..3297673 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,8 +27,10 @@ message(STATUS "Build type - CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") project(PDF4QT VERSION ${PDF4QT_VERSION} LANGUAGES CXX) -option(PDF4QT_INSTALL_DEPENDENCIES "Install dependencies" ON) -option(PDF4QT_INSTALL_QT_DEPENDENCIES "Install Qt dependencies" ON) +message("VCPKG Enabled: " ${VCPKG_TOOLCHAIN}) + +option(PDF4QT_INSTALL_DEPENDENCIES "Install dependencies" ${VCPKG_TOOLCHAIN}) +option(PDF4QT_INSTALL_QT_DEPENDENCIES "Install Qt dependencies" ${VCPKG_TOOLCHAIN}) option(PDF4QT_INSTALL_INCLUDE "Install include headers" ON) add_compile_definitions(PDF4QT_PROJECT_VERSION="${PDF4QT_VERSION}") @@ -43,7 +45,7 @@ option(PDF4QT_BUILD_ONLY_CORE_LIBRARY "Build only core library" OFF) set(PDF4QT_QT_ROOT "" CACHE PATH "Qt root directory") -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) +if(VCPKG_TOOLCHAIN AND CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "Installation directory" FORCE) endif() @@ -63,7 +65,6 @@ endif() qt_standard_project_setup(I18N_TRANSLATED_LANGUAGES en de cs es ko zh_CN) find_package(OpenSSL REQUIRED) -find_package(lcms2 REQUIRED) find_package(ZLIB REQUIRED) find_package(Freetype REQUIRED) find_package(OpenJPEG CONFIG REQUIRED) @@ -71,6 +72,13 @@ find_package(JPEG REQUIRED) find_package(PNG REQUIRED) find_package(blend2d CONFIG REQUIRED) +if(VCPKG_TOOLCHAIN) + find_package(lcms2 REQUIRED) + set(LCMS2_LIBRARIES lcms2::lcms2 CACHE INTERNAL "LCMS2 libraries") +else() # lcms usually doesn't provide a config file + find_library(LCMS2_LIBRARIES lcms2 REQUIRED) +endif() + set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) @@ -97,38 +105,40 @@ if (LINUX_GCC) find_package(TBB REQUIRED) endif() -option(PDF4QT_INSTALL_TO_USR "Install to usr directory" ON) +option(PDF4QT_INSTALL_TO_USR "Install to usr directory" ${VCPKG_TOOLCHAIN}) if(PDF4QT_LINUX) - set(PDF4QT_INSTALL_LIB_DIR_IMPL lib) - set(PDF4QT_INSTALL_BIN_DIR_IMPL bin) + set(PDF4QT_INSTALL_LIB_DIR_IMPL ${CMAKE_INSTALL_LIBDIR}) + set(PDF4QT_INSTALL_BIN_DIR_IMPL ${CMAKE_INSTALL_BINDIR}) - # Check if VCPKG_OVERLAY_PORTS is set as an environment variable or a CMake argument - if(NOT DEFINED ENV{VCPKG_OVERLAY_PORTS} AND NOT DEFINED VCPKG_OVERLAY_PORTS) - message(WARNING "The VCPKG_OVERLAY_PORTS variable is not set! Application can crash in Open/Save dialog due to incompatible LIBPNG.") - else() - set(VCPKG_OVERLAY_PORTS_VALUE "$ENV{VCPKG_OVERLAY_PORTS}") - if(DEFINED VCPKG_OVERLAY_PORTS) - set(VCPKG_OVERLAY_PORTS_VALUE "${VCPKG_OVERLAY_PORTS}") + if(VCPKG_TOOLCHAIN) + # Check if VCPKG_OVERLAY_PORTS is set as an environment variable or a CMake argument + if(NOT DEFINED ENV{VCPKG_OVERLAY_PORTS} AND NOT DEFINED VCPKG_OVERLAY_PORTS) + message(WARNING "The VCPKG_OVERLAY_PORTS variable is not set! Application can crash in Open/Save dialog due to incompatible LIBPNG.") + else() + set(VCPKG_OVERLAY_PORTS_VALUE "$ENV{VCPKG_OVERLAY_PORTS}") + if(DEFINED VCPKG_OVERLAY_PORTS) + set(VCPKG_OVERLAY_PORTS_VALUE "${VCPKG_OVERLAY_PORTS}") + endif() + message(STATUS "The VCPKG_OVERLAY_PORTS variable is set to: ${VCPKG_OVERLAY_PORTS_VALUE}") endif() - message(STATUS "The VCPKG_OVERLAY_PORTS variable is set to: ${VCPKG_OVERLAY_PORTS_VALUE}") endif() else() - set(PDF4QT_INSTALL_LIB_DIR_IMPL bin) - set(PDF4QT_INSTALL_BIN_DIR_IMPL bin) + set(PDF4QT_INSTALL_LIB_DIR_IMPL ${CMAKE_INSTALL_BINDIR}) + set(PDF4QT_INSTALL_BIN_DIR_IMPL ${CMAKE_INSTALL_BINDIR}) endif() if(PDF4QT_INSTALL_TO_USR) set(PDF4QT_INSTALL_LIB_DIR usr/${PDF4QT_INSTALL_LIB_DIR_IMPL}) set(PDF4QT_INSTALL_BIN_DIR usr/${PDF4QT_INSTALL_BIN_DIR_IMPL}) - set(PDF4QT_INSTALL_SHARE_DIR usr/share) - set(PDF4QT_INSTALL_INCLUDE_DIR usr/include) + set(PDF4QT_INSTALL_SHARE_DIR usr/${CMAKE_INSTALL_DATAROOTDIR}) + set(PDF4QT_INSTALL_INCLUDE_DIR usr/${CMAKE_INSTALL_INCLUDEDIR}) else() set(PDF4QT_INSTALL_LIB_DIR ${PDF4QT_INSTALL_LIB_DIR_IMPL}) set(PDF4QT_INSTALL_BIN_DIR ${PDF4QT_INSTALL_BIN_DIR_IMPL}) - set(PDF4QT_INSTALL_SHARE_DIR share) - set(PDF4QT_INSTALL_INCLUDE_DIR include) + set(PDF4QT_INSTALL_SHARE_DIR ${CMAKE_INSTALL_DATAROOTDIR}) + set(PDF4QT_INSTALL_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR}) endif() add_subdirectory(Pdf4QtLibCore) diff --git a/Pdf4QtLibCore/CMakeLists.txt b/Pdf4QtLibCore/CMakeLists.txt index f3436e0..bfc6068 100644 --- a/Pdf4QtLibCore/CMakeLists.txt +++ b/Pdf4QtLibCore/CMakeLists.txt @@ -170,7 +170,7 @@ GENERATE_EXPORT_HEADER(Pdf4QtLibCore EXPORT_FILE_NAME "${CMAKE_BINARY_DIR}/${INSTALL_INCLUDEDIR}/pdf4qtlibcore_export.h") target_link_libraries(Pdf4QtLibCore PRIVATE Qt6::Core Qt6::Gui Qt6::Xml Qt6::Svg) -target_link_libraries(Pdf4QtLibCore PRIVATE lcms2::lcms2) +target_link_libraries(Pdf4QtLibCore PRIVATE ${LCMS2_LIBRARIES}) target_link_libraries(Pdf4QtLibCore PRIVATE OpenSSL::SSL OpenSSL::Crypto) target_link_libraries(Pdf4QtLibCore PRIVATE ZLIB::ZLIB) target_link_libraries(Pdf4QtLibCore PRIVATE Freetype::Freetype)