Coder Social home page Coder Social logo

yosicovich / qarchive Goto Github PK

View Code? Open in Web Editor NEW

This project forked from antony-jr/qarchive

0.0 0.0 0.0 4.2 MB

Async C++ Cross-Platform library that modernizes libarchive using Qt5 :rocket:. Simply extracts 7z :hamburger:, Tarballs :8ball: and other supported formats by libarchive. :heart:

Home Page: https://antony-jr.github.io/QArchive

License: BSD 3-Clause "New" or "Revised" License

JavaScript 6.85% C++ 84.51% C 0.08% CSS 0.16% QMake 1.24% CMake 4.61% Meson 2.55%

qarchive's Introduction

QArchive Logo

QArchive GitHub issues GitHub forks GitHub stars GitHub license Test and Deploy

QArchive is a cross-platform C++ library that modernizes libarchive , This library helps you to extract and compress archives supported by libarchive. The whole library itself is crafted to work perfectly well with the Qt event loop and thus its a perfect fit for your Qt projects.

I personally made this project to extract .7z archives in order to create a library that can update Qt Apps installed via Qt Installer Framework without using the updater tool provided by Qt , because I hated using sub-process and besides I wanted a in-built updater for my application and that's not possible with the already provided updater from Qt Installer Framework.

Features

  • Single threaded and Non-Blocking API - Using Qt's Event Loop. (you can optionally run in a different thread)

  • Easy to Use API - Made some effort to match Qt's style.

  • Cyclic API , No use of mutex - The whole library is fully cyclic and therefore no mutex is used.(Only signals and slots.)

  • Drink the Qt Kool-aid - In a positive way.

Witness it with your own eyes,

#include <QCoreApplication>
#include <QArchive/QArchive>

int main(int argc, char **argv)
{
    using QArchive::DiskExtractor;
    QCoreApplication app(argc, argv);
    DiskExtractor Extractor("Test.7z");
    
    /* Connect Signals and Slots. */
    QObject::connect(&Extractor , 
                     &DiskExtractor::finished , 
                     &app , 
                     &QCoreApplication::quit);
    
    Extractor.start();
    return app.exec();
}

Getting Started

Learn more about QArchive at the official documentation.

Qt6 Support

Starting from QArchive v2.2.3, Qt6 support exists, if you have only Qt6 installed in the system then QArchive's cmake should pick that up, if you have both Qt5 and Qt6, QArchive will pick Qt5, you can pass -DQARCHIVE_QT_VERSION_MAJOR=6 to cmake to force to build QArchive with Qt6 libs.

Conan

Thanks to Eric Riff.

Starting from version 2.0.1 QArchive is available on the Conan C/C++ package manager, which means you can download prebuilt packages for all major platforms (Windows, Linux, macOS, etc).

Find an example on how to consume Conan's precompiled packages in the examples folder.

Contributors QArchive Contributors

My utmost gratitude goes to these people! โค๏ธ


Matthieu Petiot
๐Ÿ’ป

Adrien Bertrand
๐Ÿ’ป

Albert Huang
๐Ÿ’ป

Ichiro
๐Ÿ’ป

Long Nguyen
๐Ÿ’ป

g-fb
๐Ÿ’ป

Duilio Protti
๐Ÿ’ป

Eric Riff
๐Ÿ’ป

GGBond
๐Ÿ’ป

DeuxVis
๐Ÿ’ป

yosicovich
๐Ÿ’ป

tastytea
๐Ÿ’ป

M. Ludo
๐Ÿ’ป

Rosen Penev
๐Ÿ’ป

Anton
๐Ÿ’ป

You can also become one of them by contributing to this project , to know more read CONTRIBUTING.md.

Thank You Thank You

I really need to thank the developers of these libraries for creating it because QArchive is elegant because of them! โค๏ธ

Support Twitter

If you think that this project is cool then you can give it a โญ or ๐Ÿด it if you want to improve it with me. I really โค๏ธ stars though!

License

The BSD 3-clause "New" or "Revised" License.

Copyright (C) 2017-present, QArchive Contributors and Antony J.R

All Rights Reserved.

qarchive's People

Contributors

antony-jr avatar neheb avatar longseespace avatar ericriff avatar yosicovich avatar hadesd avatar adriweb avatar alberthdev avatar deuxvis avatar g-fb avatar jihadist avatar ardeidae avatar tastytea avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.