Issue #25: Basic build settings

This commit is contained in:
Jakub Melka 2022-08-14 17:50:52 +02:00
parent 9cbb6aba88
commit d0a6b55e88
15 changed files with 478 additions and 24 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
*.pro.user
*.qbs.user
*.txt.user

56
CMakeLists.txt Normal file
View File

@ -0,0 +1,56 @@
# Copyright (C) 2022 Jakub Melka
#
# This file is part of PDF4QT.
#
# PDF4QT is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# with the written consent of the copyright owner, any later version.
#
# PDF4QT is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PDF4QT. If not, see <https://www.gnu.org/licenses/>.
cmake_minimum_required(VERSION 3.16)
set(PDF4QT_VERSION 1.2.2)
project(PDF4QT VERSION ${PDF4QT_VERSION} LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Svg Xml PrintSupport TextToSpeech)
qt_standard_project_setup()
add_subdirectory(Pdf4QtLib)
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)
message("CMAKE_PREFIX_PATH = " ${CMAKE_PREFIX_PATH})
message("CMAKE_TOOLCHAIN_FILE = " ${CMAKE_TOOLCHAIN_FILE})
#macro(dump_variables)
# message(STATUS "dump_variables------------------------------------------{")
# get_cmake_property(_variableNames VARIABLES)
# foreach (_variableName ${_variableNames})
# message(STATUS "${_variableName}=${${_variableName}}")
# endforeach()
# message(STATUS "dump_variables------------------------------------------}")
#endmacro()
#
#dump_variables()

View File

@ -0,0 +1,30 @@
# Copyright (C) 2022 Jakub Melka
#
# This file is part of PDF4QT.
#
# PDF4QT is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# with the written consent of the copyright owner, any later version.
#
# PDF4QT is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PDF4QT. If not, see <https://www.gnu.org/licenses/>.
add_executable(CodeGenerator
codegenerator.cpp
main.cpp
generatormainwindow.cpp
generatormainwindow.ui
)
target_link_libraries(CodeGenerator PRIVATE Pdf4QtLib Qt6::Core Qt6::Widgets Qt6::Gui)
set_target_properties(CodeGenerator PROPERTIES
WIN32_EXECUTABLE ON
MACOSX_BUNDLE ON
)

View File

@ -0,0 +1,29 @@
# Copyright (C) 2022 Jakub Melka
#
# This file is part of PDF4QT.
#
# PDF4QT is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# with the written consent of the copyright owner, any later version.
#
# PDF4QT is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PDF4QT. If not, see <https://www.gnu.org/licenses/>.
add_executable(JBIG2_VIEWER
mainwindow.ui
mainwindow.cpp
main.cpp
)
target_link_libraries(JBIG2_VIEWER PRIVATE Pdf4QtLib Qt6::Core Qt6::Widgets Qt6::Gui)
set_target_properties(JBIG2_VIEWER PROPERTIES
WIN32_EXECUTABLE ON
MACOSX_BUNDLE ON
)

View File

@ -0,0 +1,28 @@
# Copyright (C) 2022 Jakub Melka
#
# This file is part of PDF4QT.
#
# PDF4QT is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# with the written consent of the copyright owner, any later version.
#
# PDF4QT is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PDF4QT. If not, see <https://www.gnu.org/licenses/>.
add_executable(Pdf4QtDocDiff
main.cpp
)
target_link_libraries(Pdf4QtDocDiff PRIVATE Pdf4QtLib Qt6::Core Qt6::Gui Qt6::Widgets)
set_target_properties(Pdf4QtDocDiff PROPERTIES
WIN32_EXECUTABLE ON
MACOSX_BUNDLE ON
)

View File

@ -0,0 +1,28 @@
# Copyright (C) 2022 Jakub Melka
#
# This file is part of PDF4QT.
#
# PDF4QT is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# with the written consent of the copyright owner, any later version.
#
# PDF4QT is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PDF4QT. If not, see <https://www.gnu.org/licenses/>.
add_executable(Pdf4QtDocPageOrganizer
main.cpp
)
target_link_libraries(Pdf4QtDocPageOrganizer PRIVATE Pdf4QtLib Qt6::Core Qt6::Gui Qt6::Widgets)
set_target_properties(Pdf4QtDocPageOrganizer PROPERTIES
WIN32_EXECUTABLE ON
MACOSX_BUNDLE ON
)

104
Pdf4QtLib/CMakeLists.txt Normal file
View File

@ -0,0 +1,104 @@
# Copyright (C) 2022 Jakub Melka
#
# This file is part of PDF4QT.
#
# PDF4QT is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# with the written consent of the copyright owner, any later version.
#
# PDF4QT is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PDF4QT. If not, see <https://www.gnu.org/licenses/>.
add_library(Pdf4QtLib SHARED
sources/pdfaction.cpp
sources/pdfadvancedtools.cpp
sources/pdfalgorithmlcs.cpp
sources/pdfannotation.cpp
sources/pdfblendfunction.cpp
sources/pdfccittfaxdecoder.cpp
sources/pdfcertificatemanager.cpp
sources/pdfcertificatemanagerdialog.cpp
sources/pdfcms.cpp
sources/pdfcompiler.cpp
sources/pdfcreatecertificatedialog.cpp
sources/pdfdiff.cpp
sources/pdfdocumentbuilder.cpp
sources/pdfdocumentmanipulator.cpp
sources/pdfdocumenttextflow.cpp
sources/pdfdocumenttextfloweditormodel.cpp
sources/pdfdocumentwriter.cpp
sources/pdfexecutionpolicy.cpp
sources/pdffile.cpp
sources/pdfform.cpp
sources/pdficontheme.cpp
sources/pdfitemmodels.cpp
sources/pdfjavascriptscanner.cpp
sources/pdfjbig2decoder.cpp
sources/pdfmultimedia.cpp
sources/pdfobject.cpp
sources/pdfobjecteditormodel.cpp
sources/pdfobjecteditorwidget.cpp
sources/pdfobjectutils.cpp
sources/pdfoptimizer.cpp
sources/pdfoptionalcontent.cpp
sources/pdfoutline.cpp
sources/pdfpagecontenteditorstylesettings.cpp
sources/pdfpagecontenteditortools.cpp
sources/pdfpagecontenteditorwidget.cpp
sources/pdfpagecontentelements.cpp
sources/pdfpagenavigation.cpp
sources/pdfpagetransition.cpp
sources/pdfpainterutils.cpp
sources/pdfparser.cpp
sources/pdfdocument.cpp
sources/pdfdocumentreader.cpp
sources/pdfpattern.cpp
sources/pdfplugin.cpp
sources/pdfprogress.cpp
sources/pdfredact.cpp
sources/pdfsecurityhandler.cpp
sources/pdfselectpagesdialog.cpp
sources/pdfsignaturehandler.cpp
sources/pdfsnapper.cpp
sources/pdfstructuretree.cpp
sources/pdftexteditpseudowidget.cpp
sources/pdftextlayout.cpp
sources/pdftransparencyrenderer.cpp
sources/pdfutils.cpp
sources/pdfwidgettool.cpp
sources/pdfwidgetutils.cpp
sources/pdfxfaengine.cpp
sources/pdfxreftable.cpp
sources/pdfvisitor.cpp
sources/pdfencoding.cpp
sources/pdfcatalog.cpp
sources/pdfpage.cpp
sources/pdfstreamfilters.cpp
sources/pdfdrawspacecontroller.cpp
sources/pdfdrawwidget.cpp
sources/pdfcolorspaces.cpp
sources/pdfrenderer.cpp
sources/pdfpagecontentprocessor.cpp
sources/pdfpainter.cpp
sources/pdfrenderingerrorswidget.cpp
sources/pdffunction.cpp
sources/pdfnametounicode.cpp
sources/pdffont.cpp
sources/pdfimage.cpp
sources/pdfcertificatemanagerdialog.ui
sources/pdfcreatecertificatedialog.ui
sources/pdfpagecontenteditorstylesettings.ui
sources/pdfpagecontenteditorwidget.ui
sources/pdfrenderingerrorswidget.ui
sources/pdfselectpagesdialog.ui
cmaps.qrc
)
target_link_libraries(Pdf4QtLib PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Xml Qt6::Svg)
target_include_directories(Pdf4QtLib INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/sources)

View File

@ -0,0 +1,50 @@
# Copyright (C) 2022 Jakub Melka
#
# This file is part of PDF4QT.
#
# PDF4QT is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# with the written consent of the copyright owner, any later version.
#
# PDF4QT is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PDF4QT. If not, see <https://www.gnu.org/licenses/>.
add_library(Pdf4QtViewer SHARED
pdfaboutdialog.cpp
pdfadvancedfindwidget.cpp
pdfdocumentpropertiesdialog.cpp
pdfencryptionsettingsdialog.cpp
pdfencryptionstrengthhintwidget.cpp
pdfoptimizedocumentdialog.cpp
pdfprogramcontroller.cpp
pdfrecentfilemanager.cpp
pdfrendertoimagesdialog.cpp
pdfsendmail.cpp
pdfsidebarwidget.cpp
pdftexttospeech.cpp
pdfundoredomanager.cpp
pdfviewermainwindow.cpp
pdfviewermainwindowlite.cpp
pdfviewersettings.cpp
pdfviewersettingsdialog.cpp
pdfaboutdialog.ui
pdfadvancedfindwidget.ui
pdfdocumentpropertiesdialog.ui
pdfencryptionsettingsdialog.ui
pdfoptimizedocumentdialog.ui
pdfrendertoimagesdialog.ui
pdfsidebarwidget.ui
pdfviewermainwindow.ui
pdfviewermainwindowlite.ui
pdfviewersettingsdialog.ui
pdf4qtviewer.qrc
)
target_link_libraries(Pdf4QtViewer PRIVATE Pdf4QtLib Qt6::Core Qt6::Gui Qt6::Widgets Qt6::PrintSupport Qt6::TextToSpeech Qt6::Xml)
target_include_directories(Pdf4QtViewer INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})

View File

@ -0,0 +1,29 @@
# Copyright (C) 2022 Jakub Melka
#
# This file is part of PDF4QT.
#
# PDF4QT is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# with the written consent of the copyright owner, any later version.
#
# PDF4QT is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PDF4QT. If not, see <https://www.gnu.org/licenses/>.
add_executable(Pdf4QtViewerLite
main.cpp
)
target_link_libraries(Pdf4QtViewerLite PRIVATE Pdf4QtViewer Qt6::Core Qt6::Gui Qt6::Widgets)
set_target_properties(Pdf4QtViewerLite PROPERTIES
WIN32_EXECUTABLE ON
MACOSX_BUNDLE ON
)

View File

View File

@ -0,0 +1,29 @@
# Copyright (C) 2022 Jakub Melka
#
# This file is part of PDF4QT.
#
# PDF4QT is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# with the written consent of the copyright owner, any later version.
#
# PDF4QT is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PDF4QT. If not, see <https://www.gnu.org/licenses/>.
add_executable(Pdf4QtViewerProfi
main.cpp
)
target_link_libraries(Pdf4QtViewerProfi PRIVATE Pdf4QtViewer Qt6::Core Qt6::Gui Qt6::Widgets)
set_target_properties(Pdf4QtViewerProfi PROPERTIES
WIN32_EXECUTABLE ON
MACOSX_BUNDLE ON
)

View File

@ -0,0 +1,23 @@
# Copyright (C) 2022 Jakub Melka
#
# This file is part of PDF4QT.
#
# PDF4QT is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# with the written consent of the copyright owner, any later version.
#
# PDF4QT is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PDF4QT. If not, see <https://www.gnu.org/licenses/>.
add_executable(PdfExampleGenerator
pdfexamplesgenerator.cpp
main.cpp
)
target_link_libraries(PdfExampleGenerator PRIVATE Pdf4QtLib Qt6::Core Qt6::Widgets Qt6::Gui)

49
PdfTool/CMakeLists.txt Normal file
View File

@ -0,0 +1,49 @@
# Copyright (C) 2022 Jakub Melka
#
# This file is part of PDF4QT.
#
# PDF4QT is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# with the written consent of the copyright owner, any later version.
#
# PDF4QT is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PDF4QT. If not, see <https://www.gnu.org/licenses/>.
add_executable(PdfTool
main.cpp
pdfoutputformatter.cpp
pdftoolabstractapplication.cpp
pdftoolattachments.cpp
pdftoolaudiobook.cpp
pdftoolcertstore.cpp
pdftoolcolorprofiles.cpp
pdftooldecrypt.cpp
pdftooldiff.cpp
pdftoolencrypt.cpp
pdftoolfetchimages.cpp
pdftoolfetchtext.cpp
pdftoolinfo.cpp
pdftoolinfofonts.cpp
pdftoolinfoinks.cpp
pdftoolinfojavascript.cpp
pdftoolinfometadata.cpp
pdftoolinfonameddestinations.cpp
pdftoolinfopageboxes.cpp
pdftoolinfostructuretree.cpp
pdftoolinkcoverage.cpp
pdftooloptimize.cpp
pdftoolrender.cpp
pdftoolseparate.cpp
pdftoolstatistics.cpp
pdftoolunite.cpp
pdftoolverifysignatures.cpp
pdftoolxml.cpp
)
target_link_libraries(PdfTool PRIVATE Pdf4QtLib Qt6::Core)

22
UnitTests/CMakeLists.txt Normal file
View File

@ -0,0 +1,22 @@
# Copyright (C) 2022 Jakub Melka
#
# This file is part of PDF4QT.
#
# PDF4QT is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# with the written consent of the copyright owner, any later version.
#
# PDF4QT is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PDF4QT. If not, see <https://www.gnu.org/licenses/>.
add_executable(UnitTests
tst_lexicalanalyzertest.cpp
)
target_link_libraries(UnitTests PRIVATE Pdf4QtLib Qt6::Core)

View File

@ -1,24 +0,0 @@
[requires]
openssl/1.1.1l
freetype/2.11.0
libjpeg/9c
openjpeg/2.4.0
lcms/2.12
libpng/1.6.37
[generators]
qbs
[options]
openssl:shared=True
freetype:shared=True
libjpeg:shared=True
openjpeg:shared=True
lcms:shared=True
libpng:shared=True
[imports]
bin, *.dll -> ./bin # Copies all dll files from packages bin folder to my "bin" folder
lib, *.dylib* -> ./lib # Copies all dylib files from packages lib folder to my "lib" folder
lib, *.so* -> ./lib # Copies all so files from packages lib folder to my "lib" folder