From 6bef6b9f05cd5ca46a64e831b5816ddda24f0cc6 Mon Sep 17 00:00:00 2001 From: Jakub Melka Date: Sat, 27 Aug 2022 17:32:48 +0200 Subject: [PATCH] Issue #25: Install target --- CMakeLists.txt | 81 ++++++++++++++++++- Pdf4QtDocDiff/CMakeLists.txt | 1 + Pdf4QtDocPageOrganizer/CMakeLists.txt | 1 + Pdf4QtLib/CMakeLists.txt | 1 + Pdf4QtLib/sources/pdfplugin.cpp | 1 - Pdf4QtViewer/CMakeLists.txt | 2 + Pdf4QtViewerLite/CMakeLists.txt | 2 +- .../AudioBookPlugin/CMakeLists.txt | 1 + .../DimensionsPlugin/CMakeLists.txt | 1 + .../ObjectInspectorPlugin/CMakeLists.txt | 1 + .../OutputPreviewPlugin/CMakeLists.txt | 1 + .../RedactPlugin/CMakeLists.txt | 1 + .../SignaturePlugin/CMakeLists.txt | 2 +- .../SoftProofingPlugin/CMakeLists.txt | 2 + Pdf4QtViewerProfi/CMakeLists.txt | 2 +- PdfTool/CMakeLists.txt | 2 + 16 files changed, 95 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a547d5b..891fea5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,15 +21,28 @@ set(PDF4QT_VERSION 1.2.2) project(PDF4QT VERSION ${PDF4QT_VERSION} LANGUAGES CXX) +option(PDF4QT_INSTALL_DEPENDENCIES "Install dependencies" ON) +option(PDF4QT_INSTALL_QT_DEPENDENCIES "Instal Qt dependencies" ON) + +if(WIN32 AND MSVC) + option(PDF4QT_INSTALL_MSVC_REDISTRIBUTABLE "Install MSVC redistributable package" ON) +endif() + +set(PDF4QT_QT_ROOT "" CACHE PATH "Qt root directory") + +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "Installation directory" FORCE) +endif() + set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) include(GNUInstallDirs) -find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Svg Xml PrintSupport TextToSpeech OpenGLWidgets Test) +find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Svg Xml PrintSupport TextToSpeech OpenGL OpenGLWidgets Multimedia Network Test) qt_standard_project_setup() -find_package(openssl REQUIRED) +find_package(OpenSSL REQUIRED) find_package(lcms REQUIRED) find_package(ZLIB REQUIRED) find_package(freetype CONFIG REQUIRED) @@ -44,7 +57,7 @@ set(CMAKE_AUTORCC_OPTIONS "--threshold;0;--compress;9") if (MSVC) add_compile_options(/bigobj) -endif () +endif() add_subdirectory(Pdf4QtLib) add_subdirectory(CodeGenerator) @@ -62,6 +75,68 @@ add_subdirectory(Pdf4QtDocDiff) message("CMAKE_PREFIX_PATH = " ${CMAKE_PREFIX_PATH}) message("CMAKE_TOOLCHAIN_FILE = " ${CMAKE_TOOLCHAIN_FILE}) +if(PDF4QT_INSTALL_DEPENDENCIES) + install(DIRECTORY ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin/ + TYPE BIN + FILES_MATCHING + PATTERN "*.dll" + PATTERN "*.so" + PATTERN "*.dylib" + ) + + if(PDF4QT_INSTALL_QT_DEPENDENCIES) + install(DIRECTORY ${PDF4QT_QT_ROOT}/bin/ + RUNTIME DESTINATION bin/ + FILES_MATCHING + REGEX "(Qt6Core|Qt6Gui|Qt6PrintSupport|Qt6Svg|Qt6TextToSpeech|Qt6Widgets|Qt6Xml|Qt6OpenGL|Qt6OpenGLWidgets|Qt6Multimedia|Qt6Network)\\..*" + PATTERN "Debug" EXCLUDE + ) + + install(DIRECTORY ${PDF4QT_QT_ROOT}/plugins/platforms/ + RUNTIME DESTINATION bin/platforms/ + FILES_MATCHING + PATTERN "qwindows.dll" + PATTERN "*.so" + PATTERN "*.dylib" + ) + + install(DIRECTORY ${PDF4QT_QT_ROOT}/plugins/iconengines/ + RUNTIME DESTINATION bin/iconengines/ + FILES_MATCHING + REGEX "qsvgicon\\..*" + ) + + install(DIRECTORY ${PDF4QT_QT_ROOT}/plugins/imageformats/ + RUNTIME DESTINATION bin/imageformats/ + FILES_MATCHING + PATTERN "*.dll" + PATTERN "*.so" + PATTERN "*.dylib" + REGEX "d\\..*" EXCLUDE + ) + + install(DIRECTORY ${PDF4QT_QT_ROOT}/plugins/styles/ + RUNTIME DESTINATION bin/styles/ + FILES_MATCHING + PATTERN "*.dll" + PATTERN "*.so" + PATTERN "*.dylib" + REGEX "d\\..*" EXCLUDE + ) + + install(DIRECTORY ${PDF4QT_QT_ROOT}/plugins/texttospeech/ + RUNTIME DESTINATION bin/texttospeech/ + FILES_MATCHING + PATTERN "*.dll" + PATTERN "*.so" + PATTERN "*.dylib" + REGEX "d\\..*" EXCLUDE + ) + endif() + + if(WIN32 AND MSVC AND PDF4QT_INSTALL_MSVC_REDISTRIBUTABLE) + endif() +endif() #macro(dump_variables) # message(STATUS "dump_variables------------------------------------------{") diff --git a/Pdf4QtDocDiff/CMakeLists.txt b/Pdf4QtDocDiff/CMakeLists.txt index adb0ab2..ac4faf7 100644 --- a/Pdf4QtDocDiff/CMakeLists.txt +++ b/Pdf4QtDocDiff/CMakeLists.txt @@ -37,3 +37,4 @@ set_target_properties(Pdf4QtDocDiff PROPERTIES MACOSX_BUNDLE ON ) +install(TARGETS Pdf4QtDocDiff) diff --git a/Pdf4QtDocPageOrganizer/CMakeLists.txt b/Pdf4QtDocPageOrganizer/CMakeLists.txt index 5073438..271e51d 100644 --- a/Pdf4QtDocPageOrganizer/CMakeLists.txt +++ b/Pdf4QtDocPageOrganizer/CMakeLists.txt @@ -38,3 +38,4 @@ set_target_properties(Pdf4QtDocPageOrganizer PROPERTIES MACOSX_BUNDLE ON ) +install(TARGETS Pdf4QtDocPageOrganizer) diff --git a/Pdf4QtLib/CMakeLists.txt b/Pdf4QtLib/CMakeLists.txt index b8cf2c7..cff1563 100644 --- a/Pdf4QtLib/CMakeLists.txt +++ b/Pdf4QtLib/CMakeLists.txt @@ -123,3 +123,4 @@ set_target_properties(Pdf4QtLib PROPERTIES VERSION ${PDF4QT_VERSION} SOVERSION ${PDF4QT_VERSION}) +install(TARGETS Pdf4QtLib) diff --git a/Pdf4QtLib/sources/pdfplugin.cpp b/Pdf4QtLib/sources/pdfplugin.cpp index 26611cc..7851c64 100644 --- a/Pdf4QtLib/sources/pdfplugin.cpp +++ b/Pdf4QtLib/sources/pdfplugin.cpp @@ -70,5 +70,4 @@ PDFPluginInfo PDFPluginInfo::loadFromJson(const QJsonObject* json) return result; } - } // namespace pdf diff --git a/Pdf4QtViewer/CMakeLists.txt b/Pdf4QtViewer/CMakeLists.txt index 76f0def..c81f78f 100644 --- a/Pdf4QtViewer/CMakeLists.txt +++ b/Pdf4QtViewer/CMakeLists.txt @@ -62,3 +62,5 @@ target_include_directories(Pdf4QtViewer PUBLIC ${CMAKE_BINARY_DIR}/${INSTALL_INC set_target_properties(Pdf4QtLib PROPERTIES VERSION ${PDF4QT_VERSION} SOVERSION ${PDF4QT_VERSION}) + +install(TARGETS Pdf4QtViewer) diff --git a/Pdf4QtViewerLite/CMakeLists.txt b/Pdf4QtViewerLite/CMakeLists.txt index bb5e4de..da36dbc 100644 --- a/Pdf4QtViewerLite/CMakeLists.txt +++ b/Pdf4QtViewerLite/CMakeLists.txt @@ -27,4 +27,4 @@ set_target_properties(Pdf4QtViewerLite PROPERTIES MACOSX_BUNDLE ON ) - +install(TARGETS Pdf4QtViewerLite) diff --git a/Pdf4QtViewerPlugins/AudioBookPlugin/CMakeLists.txt b/Pdf4QtViewerPlugins/AudioBookPlugin/CMakeLists.txt index ee6c2ac..57a1a15 100644 --- a/Pdf4QtViewerPlugins/AudioBookPlugin/CMakeLists.txt +++ b/Pdf4QtViewerPlugins/AudioBookPlugin/CMakeLists.txt @@ -31,3 +31,4 @@ set_target_properties(AudioBookPlugin PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PDF4QT_PLUGINS_DIR} RUNTIME_OUTPUT_DIRECTORY ${PDF4QT_PLUGINS_DIR}) +install(TARGETS AudioBookPlugin RUNTIME DESTINATION bin/pdfplugins/) diff --git a/Pdf4QtViewerPlugins/DimensionsPlugin/CMakeLists.txt b/Pdf4QtViewerPlugins/DimensionsPlugin/CMakeLists.txt index 3833b77..c5526e1 100644 --- a/Pdf4QtViewerPlugins/DimensionsPlugin/CMakeLists.txt +++ b/Pdf4QtViewerPlugins/DimensionsPlugin/CMakeLists.txt @@ -31,3 +31,4 @@ set_target_properties(DimensionsPlugin PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PDF4QT_PLUGINS_DIR} RUNTIME_OUTPUT_DIRECTORY ${PDF4QT_PLUGINS_DIR}) +install(TARGETS DimensionsPlugin RUNTIME DESTINATION bin/pdfplugins/) diff --git a/Pdf4QtViewerPlugins/ObjectInspectorPlugin/CMakeLists.txt b/Pdf4QtViewerPlugins/ObjectInspectorPlugin/CMakeLists.txt index 495c82a..44aa39f 100644 --- a/Pdf4QtViewerPlugins/ObjectInspectorPlugin/CMakeLists.txt +++ b/Pdf4QtViewerPlugins/ObjectInspectorPlugin/CMakeLists.txt @@ -37,3 +37,4 @@ set_target_properties(ObjectInspectorPlugin PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PDF4QT_PLUGINS_DIR} RUNTIME_OUTPUT_DIRECTORY ${PDF4QT_PLUGINS_DIR}) +install(TARGETS ObjectInspectorPlugin RUNTIME DESTINATION bin/pdfplugins/) diff --git a/Pdf4QtViewerPlugins/OutputPreviewPlugin/CMakeLists.txt b/Pdf4QtViewerPlugins/OutputPreviewPlugin/CMakeLists.txt index d62f480..cc238b2 100644 --- a/Pdf4QtViewerPlugins/OutputPreviewPlugin/CMakeLists.txt +++ b/Pdf4QtViewerPlugins/OutputPreviewPlugin/CMakeLists.txt @@ -33,3 +33,4 @@ set_target_properties(OutputPreviewPlugin PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PDF4QT_PLUGINS_DIR} RUNTIME_OUTPUT_DIRECTORY ${PDF4QT_PLUGINS_DIR}) +install(TARGETS OutputPreviewPlugin RUNTIME DESTINATION bin/pdfplugins/) diff --git a/Pdf4QtViewerPlugins/RedactPlugin/CMakeLists.txt b/Pdf4QtViewerPlugins/RedactPlugin/CMakeLists.txt index aae11a6..7a612a5 100644 --- a/Pdf4QtViewerPlugins/RedactPlugin/CMakeLists.txt +++ b/Pdf4QtViewerPlugins/RedactPlugin/CMakeLists.txt @@ -30,3 +30,4 @@ set_target_properties(RedactPlugin PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PDF4QT_PLUGINS_DIR} RUNTIME_OUTPUT_DIRECTORY ${PDF4QT_PLUGINS_DIR}) +install(TARGETS RedactPlugin RUNTIME DESTINATION bin/pdfplugins/) diff --git a/Pdf4QtViewerPlugins/SignaturePlugin/CMakeLists.txt b/Pdf4QtViewerPlugins/SignaturePlugin/CMakeLists.txt index a962d72..d98dc20 100644 --- a/Pdf4QtViewerPlugins/SignaturePlugin/CMakeLists.txt +++ b/Pdf4QtViewerPlugins/SignaturePlugin/CMakeLists.txt @@ -31,4 +31,4 @@ set_target_properties(SignaturePlugin PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PDF4QT_PLUGINS_DIR} RUNTIME_OUTPUT_DIRECTORY ${PDF4QT_PLUGINS_DIR}) - +install(TARGETS SignaturePlugin RUNTIME DESTINATION bin/pdfplugins/) diff --git a/Pdf4QtViewerPlugins/SoftProofingPlugin/CMakeLists.txt b/Pdf4QtViewerPlugins/SoftProofingPlugin/CMakeLists.txt index 6a0a7bd..a6296bf 100644 --- a/Pdf4QtViewerPlugins/SoftProofingPlugin/CMakeLists.txt +++ b/Pdf4QtViewerPlugins/SoftProofingPlugin/CMakeLists.txt @@ -29,3 +29,5 @@ set_target_properties(SoftProofingPlugin PROPERTIES SOVERSION ${PDF4QT_VERSION} LIBRARY_OUTPUT_DIRECTORY ${PDF4QT_PLUGINS_DIR} RUNTIME_OUTPUT_DIRECTORY ${PDF4QT_PLUGINS_DIR}) + +install(TARGETS SoftProofingPlugin RUNTIME DESTINATION bin/pdfplugins/) diff --git a/Pdf4QtViewerProfi/CMakeLists.txt b/Pdf4QtViewerProfi/CMakeLists.txt index 0170c11..0e7ca0e 100644 --- a/Pdf4QtViewerProfi/CMakeLists.txt +++ b/Pdf4QtViewerProfi/CMakeLists.txt @@ -27,4 +27,4 @@ set_target_properties(Pdf4QtViewerProfi PROPERTIES MACOSX_BUNDLE ON ) - +install(TARGETS Pdf4QtViewerProfi) diff --git a/PdfTool/CMakeLists.txt b/PdfTool/CMakeLists.txt index e04bab0..d4e2d88 100644 --- a/PdfTool/CMakeLists.txt +++ b/PdfTool/CMakeLists.txt @@ -47,3 +47,5 @@ add_executable(PdfTool ) target_link_libraries(PdfTool PRIVATE Pdf4QtLib Qt6::Core Qt6::Gui Qt6::Xml) + +install(TARGETS PdfTool)