Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Create and read from zip file with custom extension?
Forum Updated to NodeBB v4.3 + New Features

Create and read from zip file with custom extension?

Scheduled Pinned Locked Moved Unsolved General and Desktop
qt c++ziphelp install
19 Posts 4 Posters 3.0k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S StudentScripter
    25 Dec 2023, 18:21

    @Christian-Ehrlicher

    EDIT: fixed most problems, the only error i cant get fixed is:

    C:\Users\Musik\Desktop\TestProjektQTKSP\quazip-0.7.3\quazip\quazipdir.cpp:393: error: cannot convert 'QList<QuaZipFileInfo64>::iterator' to 'size_t' {aka 'long long unsigned int'}
    ..\..\quazip-0.7.3\quazip\quazipdir.cpp: In member function 'bool QuaZipDirPrivate::entryInfoList(QStringList, QDir::Filters, QDir::SortFlags, TFileInfoList&) const':
    ..\..\quazip-0.7.3\quazip\quazipdir.cpp:393:37: error: cannot convert 'QList<QuaZipFileInfo64>::iterator' to 'size_t' {aka 'long long unsigned int'}
      393 |         qsort(list.begin(), list.end(), lessThan);
          |                             ~~~~~~~~^~
          |                                     |
          |                                     QList<QuaZipFileInfo64>::iterator
    

    .
    .
    .
    .
    .
    .

    Sorry may im dumb but i've never done something like this before. Tried to read the documentation, watched the videos of Voidrealms (https://www.youtube.com/watch?v=mxlcKmvMK9Q&list=PL2D1942A4688E9D63&index=112) but things really changed since 9 years ago. In the precompiled version there are no .so files like in the tutorial, zlib1.dll is now named zlibwapi.dll and as someone who has never done something like that before im really stuck.

    I know this pisses you of as an advanced programmer so help me or help me not but im really stuck. I've downloaded the prebuild zlib.dll zip and extracted it but how do i actually use it in my project now? What do i have to do: http://www.winimage.com/zLibDll/
    521d63ec-ae00-487e-927a-336196f37a57-image.png
    abb1062a-5d6c-444e-b0bf-5721d574e85c-image.png 5d54f32f-4c99-4935-aa8f-1fa7cb34406c-image.png I also tried everything like in the video of Voidrealms but i only get errors when trying to build the quazip.pro:

    C:\Users\Musik\Desktop\TestProjektQTKSP\quazip-0.7.3\quazip\quazip.h:37: error: QTextCodec: No such file or directory
    In file included from ..\..\quazip-0.7.3\quazip\JlCompress.h:29,
                     from ..\..\quazip-0.7.3\quazip\JlCompress.cpp:26:
    ..\..\quazip-0.7.3\quazip\quazip.h:37:10: fatal error: QTextCodec: No such file or directory
       37 | #include <QTextCodec>
          |          ^~~~~~~~~~~~
    :-1: error: [Makefile.Debug:744: debug/JlCompress.o] Error 1
    C:\Users\Musik\Desktop\TestProjektQTKSP\quazip-0.7.3\quazip\quazip.h:37: error: QTextCodec: No such file or directory
    In file included from ..\..\quazip-0.7.3\quazip\quazip.cpp:29:
    ..\..\quazip-0.7.3\quazip\quazip.h:37:10: fatal error: QTextCodec: No such file or directory
       37 | #include <QTextCodec>
          |          ^~~~~~~~~~~~
    C:\Users\Musik\Desktop\TestProjektQTKSP\quazip-0.7.3\quazip\quazip.h:37: error: QTextCodec: No such file or directory
    In file included from ..\..\quazip-0.7.3\quazip\quazipdir.h:30,
                     from ..\..\quazip-0.7.3\quazip\quazipdir.cpp:25:
    ..\..\quazip-0.7.3\quazip\quazip.h:37:10: fatal error: QTextCodec: No such file or directory
       37 | #include <QTextCodec>
          |          ^~~~~~~~~~~~
    C:\Users\Musik\Desktop\TestProjektQTKSP\quazip-0.7.3\quazip\quazip.h:37: error: QTextCodec: No such file or directory
    In file included from ..\..\quazip-0.7.3\quazip\quazipfile.h:31,
                     from ..\..\quazip-0.7.3\quazip\quazipfile.cpp:25:
    ..\..\quazip-0.7.3\quazip\quazip.h:37:10: fatal error: QTextCodec: No such file or directory
       37 | #include <QTextCodec>
          |          ^~~~~~~~~~~~
    C:\Users\Musik\Desktop\TestProjektQTKSP\quazip-0.7.3\quazip\quazipfileinfo.cpp:29: error: invalid conversion from 'int' to 'QFileDevice::Permission' [-fpermissive]
    ..\..\quazip-0.7.3\quazip\quazipfileinfo.cpp: In function 'QFileDevice::Permissions permissionsFromExternalAttr(quint32)':
    ..\..\quazip-0.7.3\quazip\quazipfileinfo.cpp:29:31: error: invalid conversion from 'int' to 'QFileDevice::Permission' [-fpermissive]
       29 |     QFile::Permissions perm = 0;
          |                               ^
          |                               |
          |                               int
    C:\Users\Musik\Documents\Qt\6.5.2\mingw_64\include\QtCore\qglobal.h:50: In file included from ../../../../Documents/Qt/6.5.2/mingw_64/include/QtCore/qglobal.h:50,
    In file included from ../../../../Documents/Qt/6.5.2/mingw_64/include/QtCore/qglobal.h:50,
                     from ../../../../Documents/Qt/6.5.2/mingw_64/include/QtCore/qatomic.h:5,
                     from ../../../../Documents/Qt/6.5.2/mingw_64/include/QtCore/qrefcount.h:7,
                     from ../../../../Documents/Qt/6.5.2/mingw_64/include/QtCore/qbytearray.h:8,
                     from ../../../../Documents/Qt/6.5.2/mingw_64/include/QtCore/QByteArray:1,
                     from ..\..\quazip-0.7.3\quazip\quazipfileinfo.h:28,
                     from ..\..\quazip-0.7.3\quazip\quazipfileinfo.cpp:25:
    ../../../../Documents/Qt/6.5.2/mingw_64/include/QtCore/qflags.h:74:45: note:   initializing argument 1 of 'constexpr QFlags<T>::QFlags(Enum) [with Enum = QFileDevice::Permission]'
       74 |     constexpr inline Q_IMPLICIT QFlags(Enum flags) noexcept : i(Int(flags)) {}
          |                                        ~~~~~^~~~~
    C:\Users\Musik\Desktop\TestProjektQTKSP\quazip-0.7.3\quazip\quazipnewinfo.cpp:137: error: 'class QFileInfo' has no member named 'created'
    ..\..\quazip-0.7.3\quazip\quazipnewinfo.cpp: In member function 'void QuaZipNewInfo::setFileNTFSTimes(const QString&)':
    ..\..\quazip-0.7.3\quazip\quazipnewinfo.cpp:137:25: error: 'class QFileInfo' has no member named 'created'
      137 |     setFileNTFScTime(fi.created());
          |                         ^~~~~~~
    

    EDIT: I fixed one error by including: #include <QtCore5Compat/QTextCodec> instead of just QTextCodec but still errors remain.
    created() was switched to birthTime(), QString::SkipEmptyParts switched to Qt::SkipEmptyParts. Changed to: QFile::Permissions perm = static_castQFileDevice::Permission(0);
    and: return compressDir(fileCompressed, dir, recursive, static_castQDir::Filter(0));

    P Offline
    P Offline
    Pl45m4
    wrote on 25 Dec 2023, 18:40 last edited by
    #10

    @StudentScripter

    Have you tried to use -D QUAZIP_USE_QT_ZLIB=ON before you install zlib?


    If debugging is the process of removing software bugs, then programming must be the process of putting them in.

    ~E. W. Dijkstra

    S 1 Reply Last reply 25 Dec 2023, 18:59
    0
    • P Pl45m4
      25 Dec 2023, 18:40

      @StudentScripter

      Have you tried to use -D QUAZIP_USE_QT_ZLIB=ON before you install zlib?

      S Offline
      S Offline
      StudentScripter
      wrote on 25 Dec 2023, 18:59 last edited by
      #11

      @Pl45m4 No how do i use that? I only downloaded the quazip source files and opened the quazip.pro file with qt creator (like in VoidRealms tutorial). For zlib i downloaded the precompiled windows version. 0df1e194-6266-4cb2-8105-c4c2e1f391d6-image.png
      284b1be4-525e-4597-ab3b-7b3154f9d080-image.png

      quazip.pro file looks like this:
      i added zlib.h to the project headder files aswell as zconf.h
      d8412535-1e5e-4dfa-a692-5f0f148048f0-image.png

      TEMPLATE = lib
      CONFIG += qt warn_on
      QT -= gui
      
      # The ABI version.
      
      !win32:VERSION = 1.0.0
      
      # 1.0.0 is the first stable ABI.
      # The next binary incompatible change will be 2.0.0 and so on.
      # The existing QuaZIP policy on changing ABI requires to bump the
      # major version of QuaZIP itself as well. Note that there may be
      # other reasons for chaging the major version of QuaZIP, so
      # in case where there is a QuaZIP major version bump but no ABI change,
      # the VERSION variable will stay the same.
      
      # For example:
      
      # QuaZIP 1.0 is released after some 0.x, keeping binary compatibility.
      # VERSION stays 1.0.0.
      # Then some binary incompatible change is introduced. QuaZIP goes up to
      # 2.0, VERSION to 2.0.0.
      # And so on.
      
      
      # This one handles dllimport/dllexport directives.
      DEFINES += QUAZIP_BUILD
      
      # You'll need to define this one manually if using a build system other
      # than qmake or using QuaZIP sources directly in your project.
      CONFIG(staticlib): DEFINES += QUAZIP_STATIC
      
      LIBDIR += "C:/Users/Musik/Desktop/TestProjektQTKSP/Libs"
      INCLUDEPATH += $${LIBDIR}
      
      win32 {
      	LIB += -L$${LIBDIR} -lzdll
      }
      win64 {
      	LIB += -L$${LIBDIR} -lzdll
      }
      
      
      # Input
      include(quazip.pri)
      
      
      CONFIG(debug, debug|release) {
           mac: TARGET = $$join(TARGET,,,_debug) 
           win32: TARGET = $$join(TARGET,,,d)
      }
      
      unix:!symbian {
          headers.path=$$PREFIX/include/quazip
          headers.files=$$HEADERS
          target.path=$$PREFIX/lib/$${LIB_ARCH}
          INSTALLS += headers target
      
      	OBJECTS_DIR=.obj
      	MOC_DIR=.moc
      	
      }
      
      win32 {
          headers.path=$$PREFIX/include/quazip
          headers.files=$$HEADERS
          target.path=$$PREFIX/lib
          INSTALLS += headers target
          # workaround for qdatetime.h macro bug
          DEFINES += NOMINMAX
      }
      
      
      symbian {
      
          # Note, on Symbian you may run into troubles with LGPL.
          # The point is, if your application uses some version of QuaZip,
          # and a newer binary compatible version of QuaZip is released, then
          # the users of your application must be able to relink it with the
          # new QuaZip version. For example, to take advantage of some QuaZip
          # bug fixes.
      
          # This is probably best achieved by building QuaZip as a static
          # library and providing linkable object files of your application,
          # so users can relink it.
      
          CONFIG += staticlib
          CONFIG += debug_and_release
      
          LIBS += -lezip
      
          #Export headers to SDK Epoc32/include directory
          exportheaders.sources = $$HEADERS
          exportheaders.path = quazip
          for(header, exportheaders.sources) {
              BLD_INF_RULES.prj_exports += "$$header $$exportheaders.path/$$basename(header)"
          }
      }
      
      HEADERS +=
      
      
      SGaistS 1 Reply Last reply 25 Dec 2023, 19:21
      0
      • S StudentScripter
        25 Dec 2023, 18:59

        @Pl45m4 No how do i use that? I only downloaded the quazip source files and opened the quazip.pro file with qt creator (like in VoidRealms tutorial). For zlib i downloaded the precompiled windows version. 0df1e194-6266-4cb2-8105-c4c2e1f391d6-image.png
        284b1be4-525e-4597-ab3b-7b3154f9d080-image.png

        quazip.pro file looks like this:
        i added zlib.h to the project headder files aswell as zconf.h
        d8412535-1e5e-4dfa-a692-5f0f148048f0-image.png

        TEMPLATE = lib
        CONFIG += qt warn_on
        QT -= gui
        
        # The ABI version.
        
        !win32:VERSION = 1.0.0
        
        # 1.0.0 is the first stable ABI.
        # The next binary incompatible change will be 2.0.0 and so on.
        # The existing QuaZIP policy on changing ABI requires to bump the
        # major version of QuaZIP itself as well. Note that there may be
        # other reasons for chaging the major version of QuaZIP, so
        # in case where there is a QuaZIP major version bump but no ABI change,
        # the VERSION variable will stay the same.
        
        # For example:
        
        # QuaZIP 1.0 is released after some 0.x, keeping binary compatibility.
        # VERSION stays 1.0.0.
        # Then some binary incompatible change is introduced. QuaZIP goes up to
        # 2.0, VERSION to 2.0.0.
        # And so on.
        
        
        # This one handles dllimport/dllexport directives.
        DEFINES += QUAZIP_BUILD
        
        # You'll need to define this one manually if using a build system other
        # than qmake or using QuaZIP sources directly in your project.
        CONFIG(staticlib): DEFINES += QUAZIP_STATIC
        
        LIBDIR += "C:/Users/Musik/Desktop/TestProjektQTKSP/Libs"
        INCLUDEPATH += $${LIBDIR}
        
        win32 {
        	LIB += -L$${LIBDIR} -lzdll
        }
        win64 {
        	LIB += -L$${LIBDIR} -lzdll
        }
        
        
        # Input
        include(quazip.pri)
        
        
        CONFIG(debug, debug|release) {
             mac: TARGET = $$join(TARGET,,,_debug) 
             win32: TARGET = $$join(TARGET,,,d)
        }
        
        unix:!symbian {
            headers.path=$$PREFIX/include/quazip
            headers.files=$$HEADERS
            target.path=$$PREFIX/lib/$${LIB_ARCH}
            INSTALLS += headers target
        
        	OBJECTS_DIR=.obj
        	MOC_DIR=.moc
        	
        }
        
        win32 {
            headers.path=$$PREFIX/include/quazip
            headers.files=$$HEADERS
            target.path=$$PREFIX/lib
            INSTALLS += headers target
            # workaround for qdatetime.h macro bug
            DEFINES += NOMINMAX
        }
        
        
        symbian {
        
            # Note, on Symbian you may run into troubles with LGPL.
            # The point is, if your application uses some version of QuaZip,
            # and a newer binary compatible version of QuaZip is released, then
            # the users of your application must be able to relink it with the
            # new QuaZip version. For example, to take advantage of some QuaZip
            # bug fixes.
        
            # This is probably best achieved by building QuaZip as a static
            # library and providing linkable object files of your application,
            # so users can relink it.
        
            CONFIG += staticlib
            CONFIG += debug_and_release
        
            LIBS += -lezip
        
            #Export headers to SDK Epoc32/include directory
            exportheaders.sources = $$HEADERS
            exportheaders.path = quazip
            for(header, exportheaders.sources) {
                BLD_INF_RULES.prj_exports += "$$header $$exportheaders.path/$$basename(header)"
            }
        }
        
        HEADERS +=
        
        
        SGaistS Offline
        SGaistS Offline
        SGaist
        Lifetime Qt Champion
        wrote on 25 Dec 2023, 19:21 last edited by
        #12

        @StudentScripter Which version are you trying to build ?

        The latest code uses CMake as build system and what you show is using qmake.

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        S 1 Reply Last reply 26 Dec 2023, 09:21
        0
        • SGaistS SGaist
          25 Dec 2023, 19:21

          @StudentScripter Which version are you trying to build ?

          The latest code uses CMake as build system and what you show is using qmake.

          S Offline
          S Offline
          StudentScripter
          wrote on 26 Dec 2023, 09:21 last edited by StudentScripter
          #13

          @SGaist Im trying to build for qt 6.5 using cmake (but i never had to configure something as i did not use external libraries, but now i need to) Just fiddling around with qt and c++ for a few months and by far no professional programmer. So yeah the dumb questions aren't meant rude or lazy in any way. Been researching steadily, but it's really hard to graps and get everything if you have never done it before. :)

          So if you could hint me the way on how to do that, simple step by step, that would really help. I would really appreciate that. I also take good YT tutorials.

          Anyway have a nice christmas day. :D

          C 1 Reply Last reply 26 Dec 2023, 09:38
          0
          • S StudentScripter
            26 Dec 2023, 09:21

            @SGaist Im trying to build for qt 6.5 using cmake (but i never had to configure something as i did not use external libraries, but now i need to) Just fiddling around with qt and c++ for a few months and by far no professional programmer. So yeah the dumb questions aren't meant rude or lazy in any way. Been researching steadily, but it's really hard to graps and get everything if you have never done it before. :)

            So if you could hint me the way on how to do that, simple step by step, that would really help. I would really appreciate that. I also take good YT tutorials.

            Anyway have a nice christmas day. :D

            C Offline
            C Offline
            Christian Ehrlicher
            Lifetime Qt Champion
            wrote on 26 Dec 2023, 09:38 last edited by
            #14

            You should use the latest version and not some ancient ones: https://github.com/stachenov/quazip/releases

            Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
            Visit the Qt Academy at https://academy.qt.io/catalog

            S 1 Reply Last reply 26 Dec 2023, 10:38
            0
            • C Christian Ehrlicher
              26 Dec 2023, 09:38

              You should use the latest version and not some ancient ones: https://github.com/stachenov/quazip/releases

              S Offline
              S Offline
              StudentScripter
              wrote on 26 Dec 2023, 10:38 last edited by
              #15

              @Christian-Ehrlicher

              1. I downloaded QuaZip v1.4 and unzipped it

              2. I downloaded zlib (the precompiled dll and source code from here: http://www.winimage.com/zLibDll/)

              3. I copyied the zlibwapi.dll, zlib_bor.lib, zlibwapi.lib to an extra folder:
                ebb7f06b-9967-4850-9a58-eecd6705170c-image.png

              4. I took the zlib.h and zconf.h from the source files and copied it into the quazip folder:
                34ec6bf4-1a5f-4ecd-92d3-487afd8a1322-image.png

              5) What to do next? Or should i do something different?

              S 1 Reply Last reply 26 Dec 2023, 12:11
              0
              • S StudentScripter
                26 Dec 2023, 10:38

                @Christian-Ehrlicher

                1. I downloaded QuaZip v1.4 and unzipped it

                2. I downloaded zlib (the precompiled dll and source code from here: http://www.winimage.com/zLibDll/)

                3. I copyied the zlibwapi.dll, zlib_bor.lib, zlibwapi.lib to an extra folder:
                  ebb7f06b-9967-4850-9a58-eecd6705170c-image.png

                4. I took the zlib.h and zconf.h from the source files and copied it into the quazip folder:
                  34ec6bf4-1a5f-4ecd-92d3-487afd8a1322-image.png

                5) What to do next? Or should i do something different?

                S Offline
                S Offline
                StudentScripter
                wrote on 26 Dec 2023, 12:11 last edited by
                #16

                @Christian-Ehrlicher @SGaist I simply opened the cmake file inside the quazip folder with qt: e73a18d1-850e-4c46-9373-8f42d66536e1-image.png

                i tried adding the paths to my library and includes as mentioned the post above but no luck, build is grayed out... f686fcc5-9ec9-4b36-94e7-b050d153bfbf-image.png

                # require 3.15 for GNUInstallDirs
                cmake_minimum_required(VERSION 3.15...3.18)
                
                project(QuaZip VERSION 1.4)
                
                include(cmake/clone-repo.cmake)
                
                
                set(QUAZIP_LIB_VERSION ${QuaZip_VERSION})
                set(QUAZIP_LIB_SOVERSION 1.4.0)
                
                if(EMSCRIPTEN)
                  option(ZLIB_INCLUDE "Path to include dir" "C:/Users/Musik/Desktop/TestProjektQTKSP/quazip-1.4/quazip")
                  option(ZLIB_LIBRARY "Path to library dir" "C:/Users/Musik/Desktop/TestProjektQTKSP/quazip-1.4/Libs")
                  option(BUILD_SHARED_LIBS "" OFF)
                  option(QUAZIP_INSTALL "" OFF)
                  option(QUAZIP_USE_QT_ZLIB "" OFF)
                  option(QUAZIP_ENABLE_TESTS "Build QuaZip tests" OFF)
                else()
                  option(BUILD_SHARED_LIBS "" ON)
                  option(QUAZIP_INSTALL "" ON)
                  option(QUAZIP_USE_QT_ZLIB "" OFF)
                  option(QUAZIP_ENABLE_TESTS "Build QuaZip tests" OFF)
                endif()
                
                # Make BZIP2 optional
                option(QUAZIP_BZIP2 "Enables BZIP2 compression" ON)
                option(QUAZIP_BZIP2_STDIO "Output BZIP2 errors to stdio" ON)
                
                option(QUAZIP_FETCH_LIBS "Enables fetching third-party libraries if not found" ${WIN32})
                option(QUAZIP_FORCE_FETCH_LIBS "Enables fetching third-party libraries always" OFF)
                
                # Set the default value of `${QUAZIP_QT_MAJOR_VERSION}`.
                # We search quietly for Qt6, Qt5 and Qt4 in that order.
                # Qt6 and Qt5 provide config files for CMake.
                # Qt4 relies on `FindQt4.cmake`.
                find_package(
                  QT NAMES Qt6 Qt5
                  QUIET COMPONENTS Core
                )
                if (NOT QT_FOUND)
                  find_package(Qt4 QUIET COMPONENTS QtCore)
                  if (Qt4_FOUND)
                    set(QT_VERSION_MAJOR 4)
                  else()
                    # If neither 6, 5 nor 4 are found, we default to 5.
                    # The setup will fail further down.
                    set(QT_VERSION_MAJOR 5)
                  endif()
                endif()
                
                set(QUAZIP_QT_MAJOR_VERSION ${QT_VERSION_MAJOR} CACHE STRING "Qt version to use (4, 5 or 6), defaults to ${QT_VERSION_MAJOR}")
                
                if (QUAZIP_QT_MAJOR_VERSION EQUAL 6)
                    set(CMAKE_CXX_STANDARD 17)
                else()
                    set(CMAKE_CXX_STANDARD 14)
                endif()
                
                if(NOT CMAKE_BUILD_TYPE)
                	set(CMAKE_BUILD_TYPE RELEASE)
                endif()
                
                set(CMAKE_AUTOMOC ON)
                set(CMAKE_INCLUDE_CURRENT_DIR ON)
                set(CMAKE_DEBUG_POSTFIX d)
                
                set(QUAZIP_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
                set(QUAZIP_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
                set(QUAZIP_LIB_FILE_NAME quazip${QuaZip_VERSION_MAJOR}-qt${QUAZIP_QT_MAJOR_VERSION})
                set(QUAZIP_LIB_TARGET_NAME QuaZip)
                set(QUAZIP_DIR_NAME QuaZip-Qt${QUAZIP_QT_MAJOR_VERSION}-${QUAZIP_LIB_VERSION})
                set(QUAZIP_PACKAGE_NAME QuaZip-Qt${QUAZIP_QT_MAJOR_VERSION})
                
                if(QUAZIP_QT_MAJOR_VERSION EQUAL 6)
                	find_package(Qt6 REQUIRED COMPONENTS Core Core5Compat
                                         OPTIONAL_COMPONENTS Network Test)
                	set(QUAZIP_LIB_LIBRARIES Qt6::Core Qt6::Core5Compat)
                	set(QUAZIP_TEST_QT_LIBRARIES Qt6::Core Qt6::Core5Compat Qt6::Network Qt6::Test)
                	set(QUAZIP_PKGCONFIG_REQUIRES "zlib, Qt6Core")
                elseif(QUAZIP_QT_MAJOR_VERSION EQUAL 5)
                	find_package(Qt5 REQUIRED COMPONENTS Core
                                         OPTIONAL_COMPONENTS Network Test)
                	set(QUAZIP_LIB_LIBRARIES Qt5::Core)
                	set(QUAZIP_TEST_QT_LIBRARIES Qt5::Core Qt5::Network Qt5::Test)
                	set(QUAZIP_PKGCONFIG_REQUIRES "zlib, Qt5Core")
                elseif(QUAZIP_QT_MAJOR_VERSION EQUAL 4)
                	find_package(Qt4 4.5.0 REQUIRED COMPONENTS QtCore
                                           OPTIONAL_COMPONENTS QtNetwork QtTest)
                	set(QUAZIP_LIB_LIBRARIES Qt4::QtCore)
                	set(QUAZIP_TEST_QT_LIBRARIES Qt4::QtCore Qt4::QtNetwork Qt4::QtTest)
                	set(QUAZIP_PKGCONFIG_REQUIRES "zlib, QtCore")
                else()
                	message(FATAL_ERROR "Qt version ${QUAZIP_QT_MAJOR_VERSION} is not supported")
                endif()
                
                message(STATUS "Using Qt version ${QUAZIP_QT_MAJOR_VERSION}")
                
                set(QUAZIP_QT_ZLIB_USED OFF)
                if(QUAZIP_USE_QT_ZLIB)
                    find_package(Qt${QUAZIP_QT_MAJOR_VERSION} OPTIONAL_COMPONENTS Zlib)
                    if (Qt${QUAZIP_QT_MAJOR_VERSION}Zlib_FOUND)
                        set(QUAZIP_LIB_LIBRARIES ${QUAZIP_LIB_LIBRARIES} Qt${QUAZIP_QT_MAJOR_VERSION}::Zlib)
                        set(QUAZIP_QT_ZLIB_USED ON)
                    endif()
                endif()
                if(NOT QUAZIP_QT_ZLIB_USED)
                
                    if(EMSCRIPTEN)
                      if(NOT DEFINED ZLIB_LIBRARY)
                        message(WARNING "ZLIB_LIBRARY is not set")
                      endif()
                
                      if(NOT DEFINED ZLIB_INCLUDE)
                        message(WARNING "ZLIB_INCLUDE is not set")
                      else()
                        include_directories(${ZLIB_INCLUDE})
                      endif()
                
                      if(NOT DEFINED ZCONF_INCLUDE)
                        message(WARNING "ZCONF_INCLUDE is not set")
                      else()
                        include_directories(${ZCONF_INCLUDE})
                      endif()
                
                      set(QUAZIP_LIB_LIBRARIES ${QUAZIP_LIB_LIBRARIES} ${ZLIB_LIBRARY})
                    else()
                      find_package(ZLIB REQUIRED)
                      set(QUAZIP_LIB_LIBRARIES ${QUAZIP_LIB_LIBRARIES} ZLIB::ZLIB)
                    endif()  
                endif()
                
                set(QUAZIP_DEP)
                set(QUAZIP_INC)
                set(QUAZIP_LIB)
                set(QUAZIP_LBD)
                
                if(QUAZIP_BZIP2)
                    # Check if bzip2 is present
                    set(QUAZIP_BZIP2 ON)
                
                    if(NOT QUAZIP_FORCE_FETCH_LIBS)
                        find_package(BZip2 QUIET)
                    endif()
                
                    if(BZIP2_FOUND AND NOT QUAZIP_FORCE_FETCH_LIBS)
                        message(STATUS "Using BZIP2 ${BZIP2_VERSION_STRING}")
                
                        list(APPEND QUAZIP_INC ${BZIP2_INCLUDE_DIRS})
                        list(APPEND QUAZIP_LIB ${BZIP2_LIBRARIES})
                        list(APPEND QUAZIP_LBD ${BZIP2_LIBRARY_DIRS})
                
                        set(PC_PRIVATE_LIBS "${PC_PRIVATE_LIBS} -lbzip2")
                    elseif(QUAZIP_FETCH_LIBS)
                        clone_repo(bzip2 https://sourceware.org/git/bzip2.git)
                
                        # BZip2 repository does not support cmake so we have to create
                        # the bzip2 library ourselves
                        set(BZIP2_SRC
                            ${BZIP2_SOURCE_DIR}/blocksort.c
                            ${BZIP2_SOURCE_DIR}/bzlib.c
                            ${BZIP2_SOURCE_DIR}/compress.c
                            ${BZIP2_SOURCE_DIR}/crctable.c
                            ${BZIP2_SOURCE_DIR}/decompress.c
                            ${BZIP2_SOURCE_DIR}/huffman.c
                            ${BZIP2_SOURCE_DIR}/randtable.c)
                
                        set(BZIP2_HDR
                            ${BZIP2_SOURCE_DIR}/bzlib.h
                            ${BZIP2_SOURCE_DIR}/bzlib_private.h)
                
                        add_library(bzip2 STATIC ${BZIP2_SRC} ${BZIP2_HDR})
                
                        if(NOT QUAZIP_BZIP2_STDIO)
                            target_compile_definitions(bzip2 PRIVATE -DBZ_NO_STDIO)
                        endif()
                
                        list(APPEND QUAZIP_DEP bzip2)
                        list(APPEND QUAZIP_LIB bzip2)
                        list(APPEND QUAZIP_INC ${BZIP2_SOURCE_DIR})
                    else()
                        message(STATUS "BZip2 library not found")
                
                        set(QUAZIP_BZIP2 OFF)
                    endif()
                
                    if(QUAZIP_BZIP2)
                        find_package(BZip2)
                        add_compile_definitions(HAVE_BZIP2)
                    endif()
                endif()
                
                add_subdirectory(quazip)
                
                if(QUAZIP_ENABLE_TESTS)
                    message(STATUS "Building QuaZip tests")
                    enable_testing()
                    add_subdirectory(qztest)
                endif()
                
                
                S 1 Reply Last reply 27 Dec 2023, 08:21
                0
                • S StudentScripter
                  26 Dec 2023, 12:11

                  @Christian-Ehrlicher @SGaist I simply opened the cmake file inside the quazip folder with qt: e73a18d1-850e-4c46-9373-8f42d66536e1-image.png

                  i tried adding the paths to my library and includes as mentioned the post above but no luck, build is grayed out... f686fcc5-9ec9-4b36-94e7-b050d153bfbf-image.png

                  # require 3.15 for GNUInstallDirs
                  cmake_minimum_required(VERSION 3.15...3.18)
                  
                  project(QuaZip VERSION 1.4)
                  
                  include(cmake/clone-repo.cmake)
                  
                  
                  set(QUAZIP_LIB_VERSION ${QuaZip_VERSION})
                  set(QUAZIP_LIB_SOVERSION 1.4.0)
                  
                  if(EMSCRIPTEN)
                    option(ZLIB_INCLUDE "Path to include dir" "C:/Users/Musik/Desktop/TestProjektQTKSP/quazip-1.4/quazip")
                    option(ZLIB_LIBRARY "Path to library dir" "C:/Users/Musik/Desktop/TestProjektQTKSP/quazip-1.4/Libs")
                    option(BUILD_SHARED_LIBS "" OFF)
                    option(QUAZIP_INSTALL "" OFF)
                    option(QUAZIP_USE_QT_ZLIB "" OFF)
                    option(QUAZIP_ENABLE_TESTS "Build QuaZip tests" OFF)
                  else()
                    option(BUILD_SHARED_LIBS "" ON)
                    option(QUAZIP_INSTALL "" ON)
                    option(QUAZIP_USE_QT_ZLIB "" OFF)
                    option(QUAZIP_ENABLE_TESTS "Build QuaZip tests" OFF)
                  endif()
                  
                  # Make BZIP2 optional
                  option(QUAZIP_BZIP2 "Enables BZIP2 compression" ON)
                  option(QUAZIP_BZIP2_STDIO "Output BZIP2 errors to stdio" ON)
                  
                  option(QUAZIP_FETCH_LIBS "Enables fetching third-party libraries if not found" ${WIN32})
                  option(QUAZIP_FORCE_FETCH_LIBS "Enables fetching third-party libraries always" OFF)
                  
                  # Set the default value of `${QUAZIP_QT_MAJOR_VERSION}`.
                  # We search quietly for Qt6, Qt5 and Qt4 in that order.
                  # Qt6 and Qt5 provide config files for CMake.
                  # Qt4 relies on `FindQt4.cmake`.
                  find_package(
                    QT NAMES Qt6 Qt5
                    QUIET COMPONENTS Core
                  )
                  if (NOT QT_FOUND)
                    find_package(Qt4 QUIET COMPONENTS QtCore)
                    if (Qt4_FOUND)
                      set(QT_VERSION_MAJOR 4)
                    else()
                      # If neither 6, 5 nor 4 are found, we default to 5.
                      # The setup will fail further down.
                      set(QT_VERSION_MAJOR 5)
                    endif()
                  endif()
                  
                  set(QUAZIP_QT_MAJOR_VERSION ${QT_VERSION_MAJOR} CACHE STRING "Qt version to use (4, 5 or 6), defaults to ${QT_VERSION_MAJOR}")
                  
                  if (QUAZIP_QT_MAJOR_VERSION EQUAL 6)
                      set(CMAKE_CXX_STANDARD 17)
                  else()
                      set(CMAKE_CXX_STANDARD 14)
                  endif()
                  
                  if(NOT CMAKE_BUILD_TYPE)
                  	set(CMAKE_BUILD_TYPE RELEASE)
                  endif()
                  
                  set(CMAKE_AUTOMOC ON)
                  set(CMAKE_INCLUDE_CURRENT_DIR ON)
                  set(CMAKE_DEBUG_POSTFIX d)
                  
                  set(QUAZIP_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
                  set(QUAZIP_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
                  set(QUAZIP_LIB_FILE_NAME quazip${QuaZip_VERSION_MAJOR}-qt${QUAZIP_QT_MAJOR_VERSION})
                  set(QUAZIP_LIB_TARGET_NAME QuaZip)
                  set(QUAZIP_DIR_NAME QuaZip-Qt${QUAZIP_QT_MAJOR_VERSION}-${QUAZIP_LIB_VERSION})
                  set(QUAZIP_PACKAGE_NAME QuaZip-Qt${QUAZIP_QT_MAJOR_VERSION})
                  
                  if(QUAZIP_QT_MAJOR_VERSION EQUAL 6)
                  	find_package(Qt6 REQUIRED COMPONENTS Core Core5Compat
                                           OPTIONAL_COMPONENTS Network Test)
                  	set(QUAZIP_LIB_LIBRARIES Qt6::Core Qt6::Core5Compat)
                  	set(QUAZIP_TEST_QT_LIBRARIES Qt6::Core Qt6::Core5Compat Qt6::Network Qt6::Test)
                  	set(QUAZIP_PKGCONFIG_REQUIRES "zlib, Qt6Core")
                  elseif(QUAZIP_QT_MAJOR_VERSION EQUAL 5)
                  	find_package(Qt5 REQUIRED COMPONENTS Core
                                           OPTIONAL_COMPONENTS Network Test)
                  	set(QUAZIP_LIB_LIBRARIES Qt5::Core)
                  	set(QUAZIP_TEST_QT_LIBRARIES Qt5::Core Qt5::Network Qt5::Test)
                  	set(QUAZIP_PKGCONFIG_REQUIRES "zlib, Qt5Core")
                  elseif(QUAZIP_QT_MAJOR_VERSION EQUAL 4)
                  	find_package(Qt4 4.5.0 REQUIRED COMPONENTS QtCore
                                             OPTIONAL_COMPONENTS QtNetwork QtTest)
                  	set(QUAZIP_LIB_LIBRARIES Qt4::QtCore)
                  	set(QUAZIP_TEST_QT_LIBRARIES Qt4::QtCore Qt4::QtNetwork Qt4::QtTest)
                  	set(QUAZIP_PKGCONFIG_REQUIRES "zlib, QtCore")
                  else()
                  	message(FATAL_ERROR "Qt version ${QUAZIP_QT_MAJOR_VERSION} is not supported")
                  endif()
                  
                  message(STATUS "Using Qt version ${QUAZIP_QT_MAJOR_VERSION}")
                  
                  set(QUAZIP_QT_ZLIB_USED OFF)
                  if(QUAZIP_USE_QT_ZLIB)
                      find_package(Qt${QUAZIP_QT_MAJOR_VERSION} OPTIONAL_COMPONENTS Zlib)
                      if (Qt${QUAZIP_QT_MAJOR_VERSION}Zlib_FOUND)
                          set(QUAZIP_LIB_LIBRARIES ${QUAZIP_LIB_LIBRARIES} Qt${QUAZIP_QT_MAJOR_VERSION}::Zlib)
                          set(QUAZIP_QT_ZLIB_USED ON)
                      endif()
                  endif()
                  if(NOT QUAZIP_QT_ZLIB_USED)
                  
                      if(EMSCRIPTEN)
                        if(NOT DEFINED ZLIB_LIBRARY)
                          message(WARNING "ZLIB_LIBRARY is not set")
                        endif()
                  
                        if(NOT DEFINED ZLIB_INCLUDE)
                          message(WARNING "ZLIB_INCLUDE is not set")
                        else()
                          include_directories(${ZLIB_INCLUDE})
                        endif()
                  
                        if(NOT DEFINED ZCONF_INCLUDE)
                          message(WARNING "ZCONF_INCLUDE is not set")
                        else()
                          include_directories(${ZCONF_INCLUDE})
                        endif()
                  
                        set(QUAZIP_LIB_LIBRARIES ${QUAZIP_LIB_LIBRARIES} ${ZLIB_LIBRARY})
                      else()
                        find_package(ZLIB REQUIRED)
                        set(QUAZIP_LIB_LIBRARIES ${QUAZIP_LIB_LIBRARIES} ZLIB::ZLIB)
                      endif()  
                  endif()
                  
                  set(QUAZIP_DEP)
                  set(QUAZIP_INC)
                  set(QUAZIP_LIB)
                  set(QUAZIP_LBD)
                  
                  if(QUAZIP_BZIP2)
                      # Check if bzip2 is present
                      set(QUAZIP_BZIP2 ON)
                  
                      if(NOT QUAZIP_FORCE_FETCH_LIBS)
                          find_package(BZip2 QUIET)
                      endif()
                  
                      if(BZIP2_FOUND AND NOT QUAZIP_FORCE_FETCH_LIBS)
                          message(STATUS "Using BZIP2 ${BZIP2_VERSION_STRING}")
                  
                          list(APPEND QUAZIP_INC ${BZIP2_INCLUDE_DIRS})
                          list(APPEND QUAZIP_LIB ${BZIP2_LIBRARIES})
                          list(APPEND QUAZIP_LBD ${BZIP2_LIBRARY_DIRS})
                  
                          set(PC_PRIVATE_LIBS "${PC_PRIVATE_LIBS} -lbzip2")
                      elseif(QUAZIP_FETCH_LIBS)
                          clone_repo(bzip2 https://sourceware.org/git/bzip2.git)
                  
                          # BZip2 repository does not support cmake so we have to create
                          # the bzip2 library ourselves
                          set(BZIP2_SRC
                              ${BZIP2_SOURCE_DIR}/blocksort.c
                              ${BZIP2_SOURCE_DIR}/bzlib.c
                              ${BZIP2_SOURCE_DIR}/compress.c
                              ${BZIP2_SOURCE_DIR}/crctable.c
                              ${BZIP2_SOURCE_DIR}/decompress.c
                              ${BZIP2_SOURCE_DIR}/huffman.c
                              ${BZIP2_SOURCE_DIR}/randtable.c)
                  
                          set(BZIP2_HDR
                              ${BZIP2_SOURCE_DIR}/bzlib.h
                              ${BZIP2_SOURCE_DIR}/bzlib_private.h)
                  
                          add_library(bzip2 STATIC ${BZIP2_SRC} ${BZIP2_HDR})
                  
                          if(NOT QUAZIP_BZIP2_STDIO)
                              target_compile_definitions(bzip2 PRIVATE -DBZ_NO_STDIO)
                          endif()
                  
                          list(APPEND QUAZIP_DEP bzip2)
                          list(APPEND QUAZIP_LIB bzip2)
                          list(APPEND QUAZIP_INC ${BZIP2_SOURCE_DIR})
                      else()
                          message(STATUS "BZip2 library not found")
                  
                          set(QUAZIP_BZIP2 OFF)
                      endif()
                  
                      if(QUAZIP_BZIP2)
                          find_package(BZip2)
                          add_compile_definitions(HAVE_BZIP2)
                      endif()
                  endif()
                  
                  add_subdirectory(quazip)
                  
                  if(QUAZIP_ENABLE_TESTS)
                      message(STATUS "Building QuaZip tests")
                      enable_testing()
                      add_subdirectory(qztest)
                  endif()
                  
                  
                  S Offline
                  S Offline
                  StudentScripter
                  wrote on 27 Dec 2023, 08:21 last edited by
                  #17

                  bumping this

                  C 1 Reply Last reply 27 Dec 2023, 08:33
                  0
                  • S StudentScripter
                    27 Dec 2023, 08:21

                    bumping this

                    C Offline
                    C Offline
                    Christian Ehrlicher
                    Lifetime Qt Champion
                    wrote on 27 Dec 2023, 08:33 last edited by
                    #18

                    @StudentScripter since you do not follow the official documentation no more comments from me anymore...

                    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                    Visit the Qt Academy at https://academy.qt.io/catalog

                    S 1 Reply Last reply 27 Dec 2023, 08:52
                    0
                    • C Christian Ehrlicher
                      27 Dec 2023, 08:33

                      @StudentScripter since you do not follow the official documentation no more comments from me anymore...

                      S Offline
                      S Offline
                      StudentScripter
                      wrote on 27 Dec 2023, 08:52 last edited by StudentScripter
                      #19

                      @Christian-Ehrlicher ... i follow the official documentation but guess what... it doesnt work or i get something wrong. Look at my 2 posts above i downloaded the official precompiled dll of zlib i downloaded quazip opened the quazip cmake.txt and wanted to link to zlib but only errors...

                      AND WELL even when i try to build quazip like in the documentation i get errors too:
                      98845edf-9d8e-45ba-a944-60d1dba021a5-image.png
                      And YES i tried to USE the official documentation the last days 5 or 6 times, i really try but i just can't get it to work. Don't want to come of rude, but well it sucks to try countless hours every day to get it working. But just cant get it.

                      Used this:

                      $ cd /wherever/quazip/source/is/quazip-x.y.z
                      $ cmake -S . -B wherever/you/want/your/build/to/be -D QUAZIP_QT_MAJOR_VERSION=6, 5 or 4 {HERE I GET THE ERROR POSTED ABOVE}
                      $ cmake --build wherever/you/want/your/build/to/be
                      
                      1 Reply Last reply
                      0

                      19/19

                      27 Dec 2023, 08:52

                      • Login

                      • Login or register to search.
                      19 out of 19
                      • First post
                        19/19
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved