From 4a679efe252d1fc7ce9f5d85cf9e2af29ae9e38d Mon Sep 17 00:00:00 2001 From: Jakub Melka Date: Mon, 18 Dec 2023 20:11:06 +0100 Subject: [PATCH] Add option to build only core library --- CMakeLists.txt | 63 +++++++++++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7dc98bc..a410d35 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,7 @@ if(WIN32 AND MSVC) endif() option(PDF4QT_ENABLE_OPENGL "Enable OpenGL" ON) +option(PDF4QT_BUILD_ONLY_CORE_LIBRARY "Build only core library" OFF) set(PDF4QT_QT_ROOT "" CACHE PATH "Qt root directory") @@ -46,17 +47,26 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) include(GNUInstallDirs) -find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Svg Xml PrintSupport TextToSpeech Test) +if(PDF4QT_BUILD_ONLY_CORE_LIBRARY) + find_package(Qt6 REQUIRED COMPONENTS Core Gui Svg Xml) -if(PDF4QT_ENABLE_OPENGL) - add_compile_definitions(PDF4QT_ENABLE_OPENGL) - find_package(Qt6 REQUIRED COMPONENTS OpenGL OpenGLWidgets) + if(PDF4QT_ENABLE_OPENGL) + add_compile_definitions(PDF4QT_ENABLE_OPENGL) + find_package(Qt6 REQUIRED COMPONENTS OpenGL) + endif() +else() + find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Svg Xml PrintSupport TextToSpeech Test) + + if(PDF4QT_ENABLE_OPENGL) + add_compile_definitions(PDF4QT_ENABLE_OPENGL) + find_package(Qt6 REQUIRED COMPONENTS OpenGL OpenGLWidgets) + endif() endif() qt_standard_project_setup() find_package(OpenSSL REQUIRED) -find_package(lcms2 CONFIG REQUIRED) +find_package(lcms2 REQUIRED) find_package(ZLIB REQUIRED) find_package(Freetype REQUIRED) find_package(OpenJPEG CONFIG REQUIRED) @@ -110,31 +120,36 @@ else() endif() add_subdirectory(Pdf4QtLibCore) -add_subdirectory(Pdf4QtLibWidgets) -add_subdirectory(CodeGenerator) -add_subdirectory(JBIG2_Viewer) -add_subdirectory(PdfExampleGenerator) -add_subdirectory(PdfTool) -add_subdirectory(UnitTests) -add_subdirectory(Pdf4QtViewer) -add_subdirectory(Pdf4QtViewerPlugins) -add_subdirectory(Pdf4QtViewerProfi) -add_subdirectory(Pdf4QtViewerLite) -add_subdirectory(Pdf4QtDocPageOrganizer) -add_subdirectory(Pdf4QtDocDiff) -add_subdirectory(WixInstaller) + +if(NOT PDF4QT_BUILD_ONLY_CORE_LIBRARY) + add_subdirectory(Pdf4QtLibWidgets) + add_subdirectory(CodeGenerator) + add_subdirectory(JBIG2_Viewer) + add_subdirectory(PdfExampleGenerator) + add_subdirectory(PdfTool) + add_subdirectory(UnitTests) + add_subdirectory(Pdf4QtViewer) + add_subdirectory(Pdf4QtViewerPlugins) + add_subdirectory(Pdf4QtViewerProfi) + add_subdirectory(Pdf4QtViewerLite) + add_subdirectory(Pdf4QtDocPageOrganizer) + add_subdirectory(Pdf4QtDocDiff) + add_subdirectory(WixInstaller) +endif() message("CMAKE_PREFIX_PATH = " ${CMAKE_PREFIX_PATH}) message("CMAKE_TOOLCHAIN_FILE = " ${CMAKE_TOOLCHAIN_FILE}) -install(FILES Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtDocDiff.desktop Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtDocPageOrganizer.desktop Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtViewerLite.desktop Desktop/io.github.JakubMelka.Pdf4qt.desktop DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/applications) -install(FILES Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtDocDiff.svg Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtDocPageOrganizer.svg Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtViewerLite.svg Desktop/io.github.JakubMelka.Pdf4qt.svg DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/icons/hicolor/scalable/apps) -install(FILES Desktop/io.github.JakubMelka.Pdf4qt.appdata.xml DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/metainfo) -install(FILES Desktop/128x128/io.github.JakubMelka.Pdf4qt.Pdf4QtDocDiff.png Desktop/128x128/io.github.JakubMelka.Pdf4qt.Pdf4QtDocPageOrganizer.png Desktop/128x128/io.github.JakubMelka.Pdf4qt.Pdf4QtViewerLite.png Desktop/128x128/io.github.JakubMelka.Pdf4qt.png DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/icons/hicolor/128x128/apps) +if(NOT PDF4QT_BUILD_ONLY_CORE_LIBRARY) + install(FILES Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtDocDiff.desktop Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtDocPageOrganizer.desktop Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtViewerLite.desktop Desktop/io.github.JakubMelka.Pdf4qt.desktop DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/applications) + install(FILES Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtDocDiff.svg Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtDocPageOrganizer.svg Desktop/io.github.JakubMelka.Pdf4qt.Pdf4QtViewerLite.svg Desktop/io.github.JakubMelka.Pdf4qt.svg DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/icons/hicolor/scalable/apps) + install(FILES Desktop/io.github.JakubMelka.Pdf4qt.appdata.xml DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/metainfo) + install(FILES Desktop/128x128/io.github.JakubMelka.Pdf4qt.Pdf4QtDocDiff.png Desktop/128x128/io.github.JakubMelka.Pdf4qt.Pdf4QtDocPageOrganizer.png Desktop/128x128/io.github.JakubMelka.Pdf4qt.Pdf4QtViewerLite.png Desktop/128x128/io.github.JakubMelka.Pdf4qt.png DESTINATION ${PDF4QT_INSTALL_SHARE_DIR}/icons/hicolor/128x128/apps) -configure_file(make-package.sh.in make-package.sh) + configure_file(make-package.sh.in make-package.sh) +endif() -if(PDF4QT_INSTALL_DEPENDENCIES) +if(PDF4QT_INSTALL_DEPENDENCIES AND NOT PDF4QT_BUILD_ONLY_CORE_LIBRARY) install(DIRECTORY ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin/ RUNTIME DESTINATION ${PDF4QT_INSTALL_LIB_DIR}/ FILES_MATCHING