https://en.cppreference.com/w/cpp/links/libs
A list of open source C++ libraries:
<div style=“border: 1px solid silver; border-radius: 5px; padding: 0.5em;”> The objective of this page is to build a comprehensive list of open source C++ libraries, so that when one needs an implementation of particular functionality, one needn't to waste time searching on web (DuckDuckGo, Google, Bing etc.).
If you know a library that might be useful to others, please add a link to it here. There are no restrictions on what can be included except that the source of the library must be readily available to download.
The page is provided 'as is' - with the hope of being useful, but without any warranties. Outdated, misleading or wrong links might appear here. If you've noticed one of these, it would be great if you fixed the error. </div>
Libraries:
{]] | " | - ! rowspan="1" width="15%" | Package manager ! rowspan="1" width="65%" | Description | //build2.org/ build2] | An open source (MIT), cross-platform build toolchain that aims to approximate Rust Cargo's convenience for developing and packaging C/C++ projects while providing more depth and flexibility, especially in the build system. | //cget.readthedocs.io/en/latest/ cget] | Cmake package retrieval. This can be used to download and install cmake packages. | //github.com/scapix-com/cmodule cmodule] | Non-intrusive CMake dependency management. | //conan.io/ conan] | Decentralized, open-source (MIT), C/C++ package manager. | //github.com/TheLartians/CPM.cmake CPM.cmake] | A CMake script that adds dependency management capabilities to CMake. It's built as a thin wrapper around CMake's FetchContent module that adds version control, caching, a simple API and more. | //hunter.readthedocs.io/en/latest/ hunter] | A CMake driven cross-platform package manager for C/C++ projects. | //spack.io spack] | A package manager for supercomputers, Linux, and macOS. It makes installing scientific software easy. It isn’t tied to a particular language. | //bitbucket.org/benman/teaport teaport] | A cocoapods inspired dependency manager. | //docs.microsoft.com/en-us/cpp/vcpkg vcpkg] | A C++ package manager for Windows, Linux, and macOS. | - | } =Libraries= ==Audio== {{libtablebegin}} {{librow | Aquila | https://github.com/zsiciarz/aquila | Open-source and cross-platform DSP library for C++11. | MIT | CMake }} {{librow | Essentia | https://essentia.upf.edu/index.html | //github.com/MTG/essentia (Src)] | //www.gnu.org/licenses/agpl.html Affero GPLv3] }} {{librow | FFTW | http://www.fftw.org/ | //github.com/FFTW/fftw3 (Src)] | GPL-2.0 | CMake }} {{librow | KFR | https://www.kfrlib.com | //github.com/kfrlib/kfr (Src)] | GPL-2.0 | CMake }} {{librow | soundtouch | http://www.surina.net/soundtouch/ | //gitlab.com/soundtouch/soundtouch (Src)] | //www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPL-2.1] | Makefile }} {{libtableend}} {{anchor | CD {{libtablebegin}} {{librow | libkcompactdisc | https://github.com/KDE/libkcompactdisc | Library for interfacing with CDs | GPL v2.0 | CMake }} {{libtableend}} {{anchor | Fingerprinting {{libtablebegin}} {{librow | chromaprint | https://acoustid.org/chromaprint | //github.com/acoustid/chromaprint (Src)] | MIT, LGPL 2.1 | CMake }} {{librow | libmusicbrainz | https://musicbrainz.org/doc/libmusicbrainz | //github.com/metabrainz/libmusicbrainz (Src)] | LGPL-2.1 | CMake }} {{librow | libofa | https://github.com/tanob/libofa/ | Open-source audio fingerprint by MusicIP | //github.com/tanob/libofa/blob/master/COPYING APL] | makefile }} {{libtableend}} {{anchor | Formats {{libtablebegin}} {{librow | audiofile | http://audiofile.68k.org/ | //github.com/mpruett/audiofile/ (Src)] | LGPL-2.1 | makefile }} {{librow | flac | https://xiph.org/flac/ | FLAC stands for Free Lossless Audio Codec, meaning that audio is compressed in FLAC without any loss in quality. FLAC stands out as the fastest and most widely supported lossless audio codec, non-proprietary, is unencumbered by patents. | //opensource.org/docs/definition.php Open Source], BSD, GPL }} {{librow | libsndfile | http://www.mega-nerd.com/libsndfile/ | Libsndfile is a cross-platform, open-source library for reading and writing files containing sampled sound (such as Windows WAV and the Apple/SGI AIFF format) through one standard library interface. | LGPL v2.0 or v3.0 }} {{libtableend}} {{anchor | Tagging {{libtablebegin}} {{librow | id3lib | http://id3lib.sourceforge.net/ | ) | LGPL v2 }} {{librow | taglib | https://taglib.org/ | //github.com/taglib/taglib (Src)] | //www.mozilla.org/MPL/MPL-1.1.html MPL v1.1] }} {{libtableend}} ==Benchmarking== {{libtablebegin}} {{librow | benchmark | https://github.com/google/benchmark | A library to benchmark code snippets, similar to unit tests | Apache License 2.0 | CMake}} {{librow | Celero | https://github.com/DigitalInBlue/Celero | Feature-rich C++ Benchmark Authoring Library/Framework. Supports Windows, Linux, and OSX using C++11. | Apache License | CMake}} {{librow | gperftools | https://github.com/gperftools/gperftools | 'Google Performance Tools' includes a high-performance, multi-threaded malloc implementation plus tools for benchmarking heap allocation and CPU utilization. | BSD 3-Clause "New" or "Revised" License | configure}} {{librow | nanotimer | https://github.com/mattreecebentley/plf_nanotimer | Lowest-overhead, cross-platform simple timer class for benchmarking. | zlib license}} {{libtableend}} ==Communication== {{libtablebegin}} {{librow | ACE | https://www.dre.vanderbilt.edu/~schmidt/ACE.html | asynchronous networking, event demultiplexing, messaging}} {{librow | Apache Thrift | https://thrift.apache.org/ | , Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages.}} {{librow | Boost.Asio | http://boost.org/libs/asio/ | asynchronous and synchronous networking, timers, serial I/O | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.Beast | http://boost.org/libs/beast/ | HTTP and WebSocket library built on top of Boost.Asio | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Breep | https://github.com/Organic-Code/Breep | Event based, high-level, peer-to-peer library, allowing users to directly send and receive objects. | European Union Public License 1.1 | CMake}} {{librow | C++ REST SDK | https://github.com/Microsoft/cpprestsdk | asynchronous HTTP client and listener, asynchronous Stream, URI, JSON | MIT License | CMake}} {{librow | cpp-netlib | https://github.com/cpp-netlib/cpp-netlib | The C++ Network Library | //www.boost.org/LICENSE_1_0.txt BSL-1.0] | CMake}} {{librow | cpr | https://github.com/whoshuu/cpr | a modern C++ HTTP requests library | MIT License | CMake}} {{librow | Crow | https://github.com/CrowCpp/crow | A header-only C++ micro web framework (inspired by Python Flask) | BSD-3-Clause | CMake}} {{librow | curlpp | http://www.curlpp.org/ | C++ wrapper for CURL library}} {{librow | DumaisLib | https://github.com/pdumais/DumaisLib | Various utilities such as WebServer, JSON, WebSocket server, REST framework (a library for creating a REST API in your c++ app) | MIT License | Makefile}} {{librow | EasyHttp | https://github.com/sony/easyhttpcpp | A cross-platform HTTP client library with a focus on usability and speed, supporting http response caching and more. | MIT License | CMake}} {{librow | eCAL | https://github.com/continental/ecal | high performance inter-process communication | Apache License 2.0 | CMake}} {{librow | fineftp-server | https://github.com/continental/fineftp-server | ftp server library for windows and unix | MIT License | CMake}} {{librow | gRPC | https://grpc.io/ | A modern open-source high performance RPC framework that can run in any environment.}} {{librow | gsoap | http://gsoap2.sourceforge.net/ | C/C++ development toolkit for XML data bindings, fast WSDL/SOAP/XML Web services, WS-Security, JSON/XML-RPC RESTful services}} {{librow | hmbdc | https://github.com/hmbdc-dev/hmbdc | Headers-only, lightweight and high performance C++17 message pub/sub middleware framework/lib | c_plus_plus_open_source_libraries | Headers-only}} {{librow | HTTPP | https://github.com/daedric/httpp | Simple, production ready HTTP server built on top of Boost and a client built on top of libcurl. | BSD 2-Clause "Simplified" License | CMake, Makefile}} {{librow | IXWebSocket | https://github.com/machinezone/IXWebSocket | Open-source WebSocket + HTTP library without dependency, supports SSL and the per message deflate WebSocket extension. | BSD 3-Clause "New" or "Revised" License | CMake, Makefile}} {{librow | KCP | https://github.com/skywind3000/kcp/blob/master/README.en.md | A fast and reliable ARQ protocol that helps applications to reduce network latency. | MIT License | CMake}} {{librow | libashttp | https://github.com/tghosgor/libashttp | asynchronous HTTP client library | GNU Lesser General Public License v3.0}} {{librow | libjson-rpc-cpp | https://github.com/cinemast/libjson-rpc-cpp | This framework provides cross platform JSON-RPC (remote procedure call) support for C++. It is fully JSON-RPC 2.0 & 1.0 compatible. | MIT License | CMake, Conan}} {{librow | libnavajo | https://github.com/titi38/libnavajo | C++ framework including a fast multithreaded http server, HTML5 Websockets, SSL, X509 and HTTP authentification, compression, cookies and advanced session management, IPv4 and IPv6 (CeCILL-C). | CeCILL-C FREE SOFTWARE LICENSE AGREEMENT | CMake}} {{librow | libtins | https://libtins.github.io/ | Network packet crafting and sniffing library}} {{librow | nanomsg | https://nanomsg.org/ | fast message queue, zeromq successor}} {{librow | netif | https://github.com/gmlc-tdc/netif | Header-only C++14 library for getting network addresses on Windows, Linux, macOS, and FreeBSD. | BSD 3-Clause "New" or "Revised" License | CMake}}} {{librow | nghttp2 | https://github.com/nghttp2/nghttp2 | HTTP/2 C Library and tools (server, client, proxy and benchmarking tools) | MIT License | CMake, configure}} {{librow | ngrest | https://github.com/loentar/ngrest | Fast and easy in use JSON RESTful Web Services Framework | Apache License 2.0 | CMake}} {{librow | nng | https://nng.nanomsg.org/ | fast message queue, nanomsg successor}} {{librow | omniORB | http://omniorb.sourceforge.net | the fastest, complete and portable CORBA ORB implementation in C++ }} {{librow | OpenDDS | http://www.opendds.org | DDS (Data Distribution Service) implementation }} {{librow | Paho MQTT | https://github.com/eclipse/paho.mqtt.cpp/ | Modern C++ client for MQTT from Eclipse | c_plus_plus_open_source_libraries | CMake}} {{librow | PcapPlusPlus | http://seladb.github.io/PcapPlusPlus-Doc/ | Multiplatform C++ network sniffing and packet parsing and crafting framework}} {{librow | POCO | http://pocoproject.org/ | Zip files }} {{librow | rest_rpc | https://github.com/topcpporg/rest_rpc | modern, simple, easy to use rpc framework | c_plus_plus_open_source_libraries | CMake}} {{librow | restbed | https://github.com/corvusoft/restbed | Restbed framework brings asynchronous RESTful functionality to C++11 applications. | //github.com/Corvusoft/restbed/blob/master/LICENSE License] | CMake}} {{librow | restc-cpp | https://github.com/jgaa/restc-cpp | asio coroutines. C++14. | MIT License | CMake}} {{librow | restful_mapper | https://github.com/logandk/restful_mapper | ORM for consuming RESTful JSON APIs in C++ | c_plus_plus_open_source_libraries | CMake, Makefile}} {{librow | seastar | https://github.com/scylladb/seastar | High performance server-side application framework, based on C++14/C++17. | Apache License 2.0 | CMake, etc.}} {{librow | Silicon | http://siliconframework.org | Fast and Robust Web APIs | MIT | CMake}} {{librow | sockpp | https://github.com/fpagliughi/sockpp | A simple, modern C++ socket library | BSD 3-Clause "New" or "Revised" License | CMake}} {{librow | stream-client | https://github.com/TinkoffCreditSystems/stream-client | Lightweight, header-only, Boost-based client-side socket/connector/socket pool/resolver | Apache License 2.0 | CMake}} {{librow | tacopie | https://github.com/Cylix/tacopie/ | C++11 TCP Library | MIT License | CMake}} {{librow | TAO | https://www.dre.vanderbilt.edu/~schmidt/TAO.html | CORBA}} {{librow | taox11 | https://www.taox11.org | C++11 based CORBA implementation | MIT License}} {{librow | Unicomm | http://libunicomm.org | asynchronous networking, high-level TCP communication framework}} {{librow | uvw | https://github.com/skypjack/uvw | libuv wrapper in modern C++ | MIT License | CMake}} {{librow | WNetWrap | https://github.com/hack-tramp/wnetwrap | WinInet wrapper in C++ | MIT License }} {{librow | wvstreams | https://github.com/apenwarr/wvstreams | C++ networking library including UniConf and a convenient D-Bus API | GPL }} {{librow | zeromq | http://zeromq.org/ | fast message queue}} {{libtableend}} ==Concurrency== {{libtablebegin}} {{librow | BlockingCollection | https://github.com/CodeExMachina/BlockingCollection | A C++11 thread safe collection class modeled after .NET BlockingCollection.}} {{librow | Boost.Atomic | https://www.boost.org/doc/libs/release/doc/html/atomic.html | provides atomic data types and operations on these data types, as well as memory ordering constraints required for coordinating multiple threads through atomic variables. | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.Compute | https://github.com/kylelutz/compute | (unofficial) GPU/parallel-computing library for C++ based on OpenCL. | //www.boost.org/LICENSE_1_0.txt BSL-1.0] | CMake }} {{librow | Boost.Context | https://www.boost.org/doc/libs/release/libs/context/doc/html/index.html | A C++11 library that provides a cooperative multitasking abstraction on a single thread. | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.Interprocess | https://www.boost.org/doc/libs/release/doc/html/interprocess.html | shared memory, memory-mapped files, semaphores, mutexes, condition variables and upgradable mutex types, named versions of the synchronization objects, file locking, message queues. | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.Lockfree | https://www.boost.org/doc/libs/release/doc/html/lockfree.html | a queue, a stack, and a ringbuffer (spsc_queue). | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.MPI | https://www.boost.org/doc/libs/release/doc/html/mpi.html | //www.mpi-forum.org/ Message Passing Interface] | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.Thread | https://www.boost.org/doc/libs/release/doc/html/thread.html | enables the use of multiple threads of execution with shared data and means for synchronizing data between the threads. | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | concurrencpp | https://github.com/David-Haim/concurrencpp | Modern concurrency for C++. Tasks, executors, timers and C++20 coroutines. | MIT | CMake }} {{librow | hipSYCL | https://github.com/illuhad/hipSYCL | provides a clang-based toolchain and a runtime SYCL implementation that can run on multiple target devices (NVIDIA/AMD GPU’s, CPU’s) | BSD-2-Clause License | CMake }} {{librow | HPX | https://github.com/STEllAR-GROUP/hpx/ | A general purpose C++ runtime system for parallel and distributed applications of any scale}} {{librow | Intel TBB | https://software.intel.com/content/www/us/en/develop/tools/threading-building-blocks.html | //software.intel.com/content/www/us/en/develop/tools/threading-building-blocks/documentation.html (Doc)] | //github.com/oneapi-src/oneTBB/blob/tbb_2020/LICENSE Apache-2.0 License] or Commercial | CMake, Makefile }} {{librow | KOKKOS | https://github.com/kokkos/kokkos | A programming model in C++ for writing performance portable HPC applications}} {{librow | libopenmpi | http://www.open-mpi.org/ | The Open MPI Project is an open source Message Passing Interface implementation | //www.open-mpi.org/community/license.php 3-clause BSD license] }} {{librow | libsimdpp | https://github.com/p12tic/libsimdpp | A portable header-only zero-overhead C++ low level SIMD library. | Boost License | CMake}} {{librow | MPL | https://github.com/rabauke/mpl | //www.mpi-forum.org/ Message Passing Interface] | BSD 3-Clause "New" or "Revised" License | CMake}} {{librow | MutexGear | https://github.com/oleh-derevenko/mutexgear | Mutex-only synchronization (wheel, rwlock, work queues) | The MutexGear Library License | configure, MSVC}} {{librow | OpenMP | http://www.openmp.org/specifications/ | The OpenMP API specification for parallel programming }} {{librow | RaftLib | http://raftlib.io | C++17 stream-like concurrent actors that enable parallel data-flow computations | Apache-2.0 License | CMake }} {{librow | SObjectizer | https://sourceforge.net/projects/sobjectizer/ | A small framework for simplification of development of concurrent and event-driven applications in C++ by using actor and publish-subscribe models.}} {{librow | subprocess | https://github.com/benman64/subprocess | C++17/20 cross platform library for running subprocesses | MIT License | CMake, Teaport }} {{librow | Taskflow | https://github.com/taskflow/taskflow | Parallel Task Programming in Modern C++ | //github.com/taskflow/taskflow/blob/master/LICENSE TASKFLOW MIT License] | CMake }} {{librow | Thrust | http://thrust.github.io/ | STL-like parallel algorithms and data-structures on top of CUDA, TBB, or OpenMP | licensing Apache v2.0, Boost v1.0.] | CMake }} {{librow | VexCL | https://github.com/ddemidov/vexcl | C++ vector expression template library for OpenCL, CUDA, OpenMP | MIT License | CMake }} {{librow | ViennaCL | http://viennacl.sourceforge.net/ | Linear algebra and algorithms with OpenMP, CUDA, and OpenCL backends}} {{librow | Xenium | https://github.com/mpoeter/xenium | A header-only C++17 library that provides various concurrent data structures and reclamation schemes. | MIT License | CMake }} {{libtableend}} ==Configuration== {{libtablebegin}} {{librow | Boost.Program_options | https://www.boost.org/doc/libs/release/doc/html/program_options.html | The library allows to obtain program options, that is (name, value) pairs from the user, via conventional methods such as command line, config file, and environment variables. | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | gconfmm | https://www.gtkmm.org/ }} {{librow | libconfig | http://www.hyperrealm.com/libconfig/}} {{librow | libconfini | https://madmurphy.github.io/libconfini/ | INI parser}} {{librow | uconfig | https://github.com/TinkoffCreditSystems/uconfig | Lightweight, header-only, C++17 configuration library | Apache License 2.0 | CMake}} {{libtableend}} {{anchor | Command Line {{libtablebegin}} {{librow | Boost.Program_options | https://www.boost.org/doc/libs/release/doc/html/program_options.html | The library allows to obtain program options, that is (name, value) pairs from the user, via conventional methods such as command line, config file, and environment variables. | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | cxxopts | https://github.com/jarro2783/cxxopts | Lightweight C++ command line option parser. | MIT | CMake}} {{librow | gflags | https://gflags.github.io/gflags/ | Library that implements commandline flags processing. It includes built-in support for standard types such as string and the ability to define flags in the source file in which they are used. | BSD | CMake}} {{librow | hbristow/argparse | https://github.com/hbristow/argparse | A slimline C++ class for parsing command-line arguments, with an interface similar to python's class of the same name. | BSD | }} {{librow | morrisfranken/argparse | https://github.com/morrisfranken/argparse | A lightweight header-only library for parsing command line arguments in an elegant manner. | Apache 2 | CMake}} {{librow | p-ranav/argparse | https://github.com/p-ranav/argparse | Single header argument Parser for C++17 | MIT | CMake}} {{librow | tclap | https://sourceforge.net/projects/tclap/ | A simple templatized C++ library for parsing command line arguments. The library provides a simple, flexible object-oriented interface. | MIT | CMake}} {{libtableend}} {{anchor | CSS {{libtablebegin}} {{librow | mycss | https://github.com/lexborisov/mycss | CSS Parser}} {{libtableend}} {{anchor | HOCON {{libtablebegin}} {{librow | cpp-hocon | https://github.com/puppetlabs/cpp-hocon/tree/master/lib/src | The C++ implementation of the HOCON format developed by Pupplet.}} {{libtableend}} {{anchor | JSON {{libtablebegin}} {{librow | ArduinoJson | https://github.com/bblanchon/ArduinoJson | ArduinoJson}} {{librow | Boost.JSON | https://www.boost.org/doc/libs/release/libs/json/doc/html/index.html | JSON parsing, serialization, and DOM in C++11/17 | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | CAJUN | http://cajun-jsonapi.sourceforge.net/}} {{librow | DAW JSON Link | https://github.com/beached/daw_json_link | C++17 static C++ bindings with type checking allowing of parsing directly to user data structures without library allocation, push/pull modes, allocator support, constexpr | BSL 1.0 | CMake}} {{librow | jansson | http://www.digip.org/jansson/ | Jansson is C library for encoding, decoding and manipulating JSON data.}} {{librow | jeayeson | https://github.com/jeaye/jeayeson | A very sane (header only) C++14 JSON library}} {{librow | jios | https://github.com/castedo/jios | JSON Input Output Streams | MIT License | CMake}} {{librow | JOST | http://ddsbench.svn.sourceforge.net/viewvc/ddsbench/trunk/jost/}} {{librow | json | https://github.com/nlohmann/json | Niels Lohmann JSON}} {{librow | JSON Voorhees | http://tgockel.github.io/json-voorhees/ | Killer JSON for C++}} {{librow | JSON++ | https://bitbucket.org/tunnuz/json}} {{librow | json-cpp | https://github.com/ascheglov/json-cpp}} {{librow | json11 | https://github.com/dropbox/json11 | json11 is a tiny JSON library for C++11, providing JSON parsing and serialization.}} {{librow | JsonBox | https://github.com/anhero/JsonBox}} {{librow | jsoncons | https://github.com/danielaparker/jsoncons/ | A header-only library for JSON and JSON-like data formats, with JSON Pointer, JSON Patch, JSONPath, CSV, MessagePack, CBOR, BSON, UBJSON.}} {{librow | jsoncpp | https://github.com/open-source-parsers/jsoncpp | c_plus_plus_open_source_libraries | MIT License | CMake, Conan, vcpkg}} {{librow | jsonme-- | https://github.com/pibara/jsonme--}} {{librow | libjson | https://sourceforge.net/projects/libjson/}} {{librow | minijson | https://giacomodrago.github.io/minijson/ | C++ DOM-less and allocation-free JSON parsing and serialization}} {{librow | nosjob | http://fossil.wanderinghorse.net/repos/nosjob/index.cgi/index}} {{librow | qjson | http://qjson.sourceforge.net/}} {{librow | rapidjson | https://github.com/miloyip/rapidjson}} {{librow | simdjson | https://github.com/simdjson/simdjson | Parsing gigabytes of JSON per second}} {{librow | struct_mapping | https://github.com/bk192077/struct_mapping | Mapping json to and from a c++ structure}} {{librow | ThorsSerializer | https://github.com/Loki-Astari/ThorsSerializer | JSON/BSON/YAML Input Output Streams | MIT License | Makefile}} {{librow | ujson | https://bitbucket.org/awangk/ujson | µjson is a small, C++11, UTF-8, JSON library}} {{librow | zoolib | http://www.zoolib.org/doc/}} {{libtableend}} {{anchor | TOML {{libtablebegin}} {{librow | toml++ | https://marzer.github.io/tomlplusplus/ | TOML parser and serializer for C++17 and later}} {{librow | toml11 | https://github.com/ToruNiina/toml11 | TOML parsing library based on C++11}} {{libtableend}} {{anchor | XML {{libtablebegin}} {{librow | ai-xml | https://github.com/CarloWood/ai-xml | Serialize objects to <em>and</em> from XML by adding a single, minimal, function to a class. Uses libxml++ under the hood.}} {{librow | GPDS | https://github.com/simulton/gpds | General purpose data serializer to serialize objects to and from XML. Uses TinyXML under the hood.}} {{librow | gSOAP | http://gsoap2.sourceforge.net | XML data bindings}} {{librow | libxml++ | http://libxmlplusplus.sourceforge.net/}} {{librow | pugixml | http://pugixml.org/ | Light-weight, simple and fast XML parser for C++ with XPath support | MIT License | CMake, Conan }} {{librow | tinyxml | http://www.grinninglizard.com/tinyxml/}} {{librow | tinyxml2 | https://github.com/leethomason/tinyxml2/ | Another and work in progress of TinyXML.}} {{librow | Xerces | http://xerces.apache.org/xerces-c/}} {{libtableend}} {{anchor | YAML {{libtablebegin}} {{librow | yaml-cpp | https://github.com/jbeder/yaml-cpp }} {{libtableend}} ==Containers== {{libtablebegin}} {{librow | Boost.Bimap | https://www.boost.org/doc/libs/release/libs/bimap/ | a bidirectional maps library that offers associative containers such as {{tt | bimap<X,Y>}} in which both {{tt | X}} and {{tt | Y}} can be used as a key. | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.Container | https://www.boost.org/doc/libs/release/libs/container/ | {{tt | flat_map}}, {{tt | flat_set}}, {{tt | flat_multimap}}, {{tt | flat_multiset}}, {{tt | stable_vector}}, {{tt | static_vector}}, {{tt | small_vector}}, {{tt | devector}}. | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.Fusion | https://www.boost.org/doc/libs/release/libs/fusion/ | a library for working with heterogeneous collections of ''tuples''. Provides a set of containers ({{tt | vector}}, {{tt | list}}, {{tt | set}} and {{tt | map}}), along with transformed presentation of their underlying data, a.k.a ''views''." | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.Heap | https://www.boost.org/doc/libs/release/libs/heap/ | an implementation of ''priority queues'' with more functionality and different performance characteristics, than STL has. | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.Pointer Container | https://www.boost.org/doc/libs/release/libs/ptr_container/ | provides containers for holding ''heap-allocated objects'' in an exception-safe manner and with minimal overhead. | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.Tuple | https://www.boost.org/doc/libs/release/libs/tuple/ | implements pre-C++11 n-{{tt | tuple}} (a fixed size collection of elements) | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.Variant | https://www.boost.org/doc/libs/release/libs/variant/ | implements pre-C++17 {{tt | variant}} (a safe, generic, stack-based discriminated {{tt | union}} container) | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | cpp-btree | https://github.com/diegocaro/cpp-btree/ | {{tt | btree_map}}, {{tt | btree_set}}, {{tt | btree_multimap}}, {{tt | //code.google.com/archive/p/cpp-btree/source/default/source (Src)] | //www.apache.org/licenses/LICENSE-2.0 Apache-2.0] | CMake }} {{librow | DataFrame | https://github.com/hosseinmoein/DataFrame | C++ DataFrame for statistical, Financial, and ML analysis -- in modern C++ using native types and continuous memory storage | BSD-3-Clause | CMake, Makefile, Conan, vcpkg}} {{librow | variant | https://github.com/eggs-cpp/variant | Eggs.Variant is a C++11/14/17 generic, type-safe, discriminated union. It is notable in particular for having very good {{lc | constexpr}} support. | //github.com/eggs-cpp/variant/blob/master/LICENSE.txt BSL-1.0] | CMake }} {{librow | Frozen | https://github.com/serge-sans-paille | {{lc | constexpr}} perfect-hashing-based frozen sets and maps | //www.apache.org/licenses/LICENSE-2.0 Apache-2.0] }} {{librow | Immer | https://github.com/arximboldi/immer | A library of persistent and immutable data structures | Boost License | CMake }} {{librow | colony | http://www.plflib.org/colony.htm | Unordered "bag-like" container which outperforms {{tt | //github.com/mattreecebentley/plf_colony (Src)] | //en.wikipedia.org/wiki/Zlib_License zlib license] | //cppget.org/plf-colony build2] }} {{librow | list | http://www.plflib.org/list.htm | {{lc | //github.com/mattreecebentley/plf_list (Src)] | //en.wikipedia.org/wiki/Zlib_License zlib license] }} {{librow | queue | http://www.plflib.org/queue.htm | Drop-in replacement container for the {{lc | queue}} container adaptor with better performance than {{lc | deque}} and {{lc | //github.com/mattreecebentley/plf_queue (Src)] | //en.wikipedia.org/wiki/Zlib_License zlib license] }} {{librow | stack | http://www.plflib.org/stack.htm | Drop-in replacement container for the {{lc | stack}} container adaptor with better performance than {{lc | vector}} and {{lc | //github.com/mattreecebentley/plf_stack (Src)] | //en.wikipedia.org/wiki/Zlib_License zlib license] }} {{librow | ring_span | https://github.com/martinmoene/ring-span-lite | A header-only lite implementation of Arthur O'Dwyer's {{tt | ring_span}}, a.k.a. circular buffer view. C++98- compatible. | //github.com/martinmoene/ring-span-lite/blob/master/LICENSE.txt BSL-1.0] | CMake }} {{librow | strict_variant | https://github.com/cbeck88/strict-variant | A realtime/embedded-friendly (i.e. {{tt | -fno-exceptions}}/{{tt | -fno-rtti}} compatible), never-empty {{tt | variant}} targetting C++11. Fast, prevents many undesirable implicit conversions. | BSL-1.0 | CMake }} {{librow | Ygg | https://github.com/tinloaf/ygg | Red–black_tree | Red-Black-Tree, an Interval_tree | Interval Tree and an Interval Map. ]] | MIT License | CMake }} {{libtableend}} ==Cryptography== {{libtablebegin}} {{librow | Botan | https://botan.randombit.net/ }} {{librow | crypto++ | https://www.cryptopp.com/ }} {{librow | gnutls | https://www.gnutls.org/ }} {{librow | openssl | https://www.openssl.org/ }} {{librow | TomCrypt | https://github.com/libtom/libtomcrypt }} {{libtableend}} ==Databases== {{libtablebegin}} {{librow | cpp-redis | https://github.com/Cylix/cpp_redis/ | async, thread-safe, no dependency, pipelining, multi-platform.}} {{librow | DTL | http://dtemplatelib.sourceforge.net/ }} {{librow | EasyQtSql | https://github.com/kramolnic/EasyQtSql | A lightweight header-only C++11 library for quick and easy SQL querying with QtSql}} {{librow | Galera | https://galeracluster.com/downloads/ | //github.com/codership/galera Src]) | GPLv2 | CMake, Scons}} {{librow | LevelDB | https://github.com/google/leveldb | A C++ library developed by Google that handles billion-scale Key-Value data persistence storage. }} {{librow | libpqxx | http://pqxx.org/development/libpqxx/ }} {{librow | lmdb++ | https://github.com/bendiken/lmdbxx | C++11 wrapper for the LMDB embedded B+ tree database library. }} {{librow | mongocxx | https://github.com/mongodb/mongo-cxx-driver/tree/master | C++11 driver library for MongoDB }} {{librow | mysql++ | https://dev.mysql.com/ }} {{librow | nanodbc | https://github.com/nanodbc/nanodbc | A small, cross-platform, C++14 wrapper for the native C ODBC API | MIT | CMake}} {{librow | ODB | https://www.codesynthesis.com/products/odb/ | ODB is an open-source, cross-platform, and cross-database object-relational mapping (ORM) system for C++. ODB supports MySQL, SQLite, PostgreSQL, Oracle, and Microsoft SQL Server relational databases as well as C++98/03 and C++11 language standards. | GPL2 and/or NCUEL }} {{librow | OTL | http://otl.sourceforge.net/ }} {{librow | Pgfe | https://github.com/dmitigr/pgfe/ | The PostgreSQL client (FrontEnd) API in modern C++ | Zlib License | CMake }} {{librow | QTL | https://github.com/znone/qtl | A friendly and lightweight C++ database library for MySQL, SQLite and ODBC. }} {{librow | QUINCE | http://quince-lib.com/ | QUeries IN C++ Expressions (ORM+EDSL) | Boost License }} {{librow | QxOrm | https://www.qxorm.com/ | standalone multi-threaded HTTP web server | GPLv3 or Proprietary license }} {{librow | redis-cpp | https://github.com/tdv/redis-cpp/ | C++17 Lightweight C++ client header-only library for executing Redis commands.}} {{librow | redis-plus-plus | https://github.com/sewenew/redis-plus-plus | A Redis client written in C++ 11, and supports Redis Sentinel, Redis Cluster, pipeline, transaction, pubsub, connection pool and STL-like interface}} {{librow | SOCI | http://soci.sourceforge.net/ }} {{librow | SQLAPI++ | http://www.sqlapi.com/}} {{librow | SQLiteCPP | https://github.com/SRombauts/SQLiteCpp }} {{librow | sqlpp11 | https://github.com/rbock/sqlpp11}} {{librow | taoPQ | https://github.com/taocpp/taopq | Lightweight C++17 PostgreSQL client library | MIT License | CMake }} {{libtableend}} ==Embedded languages bindings== {{libtablebegin}} {{librow | AngelScript | http://angelcode.com/angelscript/ | a scripting language like C++.}} {{librow | ChaiScript | https://github.com/ChaiScript/ChaiScript }} {{librow | ExprTk | http://partow.net/programming/exprtk/index.html }} {{librow | Jinx | https://www.jinx-lang.org/ | Scripting language designed for videogames.}} {{librow | lua | http://www.lua.org }} {{librow | mozjs | http://www.mozilla.org/js/spidermonkey/ }} {{librow | muparser | http://muparser.sourceforge.net }} {{librow | PythonQt | http://pythonqt.sourceforge.net/ }} {{librow | ScriptCaller | https://github.com/Baduit/ScriptCaller | a header only library allowing us to call ruby scripts.}} {{librow | sol2 | https://github.com/ThePhD/sol2 }} {{librow | v8pp | https://github.com/pmed/v8pp | Bind C++ functions and classes into V8 JavaScript engine }} {{libtableend}} ==Embedded/Realtime== {{libtablebegin}} {{librow | distortos | http://distortos.org/ | object-oriented C++ RTOS for microcontrollers }} {{librow | ETL | http://www.etlcpp.com | Embedded Template Library - C++03, Portable template library tailored for low resource (embedded) platforms | MIT licensed }} {{librow | QP/C++ | http://sourceforge.net/projects/qpc/files/QP_C%2B%2B/4.5.04/ | Real-Time Embedded Frameworks based on active objects & state machines | GPLv3 License }} {{librow | µcuREST | https://github.com/hutorny/micurest | C++11 REST/JSON server framework for microcontrollers }} {{libtableend}} ==File metadata== {{libtablebegin}} {{librow | exempi | http://libopenraw.freedesktop.org/wiki/Exempi }} {{librow | exiv2 | http://www.exiv2.org }} {{librow | libkexiv2 | https://www.kde.org/ }} {{librow | rarian | https://rarian.freedesktop.org/ }} {{libtableend}} ==Financial Calculations== {{libtablebegin}} {{librow | DataFrame | https://github.com/hosseinmoein/DataFrame | C++ DataFrame for statistical, Financial, and ML analysis -- in modern C++ using native types and continuous memory storage | BSD-3-Clause | CMake, Makefile, Conan}} {{librow | QuantLib | http://www.quantlib.org/ | Quantitative finance Library - A free/open-source library for quantitative finance | modified BSD license }} {{libtableend}} ==Game Engine Architecture== {{libtablebegin}} {{librow | Anax | https://github.com/miguelishawt/anax}} {{librow | BOX2D | http://box2d.org/ | Physics engine}} {{librow | EntityPlus | https://github.com/Yelnats321/EntityPlus}} {{librow | EntityX | https://github.com/alecthomas/entityx}} {{librow | EnTT | https://github.com/skypjack/entt}} {{libtableend}} ==General Multimedia== {{libtablebegin}} {{librow | Kigs-framework | https://github.com/Kigs-framework/kigs | Modular Multi-purpose Cross Platform Framework | MIT license}} {{librow | openFrameworks | http://www.openframeworks.cc/ | c_plus_plus_open_source_libraries | MIT license}} {{librow | SDL | http://www.libsdl.org/ | cross-platform, low level access to audio, keyboard, mouse, joystick, and graphics hardware via that platform's graphics API (usually OpenGL or Direct3D) | zlib license}} {{librow | SFML | http://www.sfml-dev.org/index.php | system, window, graphics (over OpenGL), audio and network. | zlib/png license | CMake }} {{librow | SIGIL | http://www.libsigil.com/ | Windows, Linux and Raspberry Pi | //gitlab.com/geoff-nagy/sigil/-/blob/master/LICENSES.txt License Info] | CMake }} {{libtableend}} ==Generic== {{libtablebegin}} {{librow | Abseil | http://abseil.io/ | //github.com/abseil/abseil-cpp Src]) | //github.com/abseil/abseil-cpp/blob/master/LICENSE Apache-2.0 License ] | CMake }} {{librow | Abstract Intrusive Containers | https://github.com/wkaras/C-plus-plus-intrusive-container-templates | //www.boost.org/doc/libs/release/doc/html/intrusive.html Boost.Intrusive], but not STL-compatible. | }} {{librow | BDE | https://github.com/bloomberg/bde | The Bloomberg Development Environment core libraries from Bloomberg L.P. | Apache License}} {{librow | Better Enums | https://github.com/aantron/better-enums | Reflective enums (enum to string, iteration, etc.) with constexpr support. | BSD License}} {{librow | bitfield.h | https://github.com/wkaras/C-plus-plus-library-bit-fields | Bit field structure facility, more portable/flexible than the base language facility.}} {{librow | Boost | https://www.boost.org/doc/libs | large collection of generic libraries | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | CAF | https://github.com/actor-framework/actor-framework | The C++ Actor Framework (CAF) is an open source C++11 actor model implementation featuring lightweight & fast actor implementations, pattern matching for messages, network transparent messaging, and more | BSD License}} {{librow | Cinder | https://libcinder.org/ | //github.com/cinder/Cinder (Src)] | //github.com/cinder/Cinder/blob/master/COPYING Modified BSD License] | CMake }} {{librow | CommonPP | https://github.com/daedric/commonpp | Multi-purpose library with a strong emphasis on getting metrics out of a project. | BSD License}} {{librow | composite_op.h | https://github.com/wkaras/C-plus-plus-library-default-operators | Basic class data member introspection, cumbersome and often non-re-entrant, but sometimes useful.}} {{librow | cpp-mmf | https://github.com/carlomilanesi/cpp-mmf/ | A C++98 library that encapsulates memory-mapped-files for POSIX or Windows}} {{librow | cxxomfort | http://ryan.gulix.cl/fossil.cgi/cxxomfort/ | Backports of C++ features (C++11 to C++03 and C++1y proposals to C++11/C++03).}} {{librow | Dlib | https://dlib.net | networking, threads, graphical interfaces, data structures, linear algebra, machine learning, XML and text parsing, numerical optimization, Bayesian nets, and numerous other tasks | Boost License}} {{librow | fcppt | http://fcppt.org/ | Freundlich's C++ Toolkit (fcppt) is a collection of libraries focusing on improving general C++ code by providing better types and making use of functional programming.}} {{librow | Folly | https://github.com/facebook/folly | //github.com/facebook/folly/blob/main/folly/docs Doc]) | //github.com/facebook/folly/blob/main/LICENSE Apache-2.0 License] | CMake, vcpkg }} {{librow | GSL | https://github.com/Microsoft/GSL | //isocpp.github.io/CppCoreGuidelines C++ Core Guidelines] | //github.com/microsoft/GSL/blob/main/LICENSE MIT License] | CMake, vcpkg}} {{librow | gsl-lite | https://github.com/martinmoene/gsl-lite | A single-file header-only version of ISO C++ Guideline Support Library (GSL) for C++98, C++11 and later | MIT License}} {{librow | History | https://github.com/ryder052/History | Modern C++17 Undo/Redo Framework | //github.com/ryder052/History/blob/master/LICENSE Unlicense]}} {{librow | IP-DOS (tm) | https://github.com/ideafarm/ideafarm.home.1 | A general purpose programming environment for the C++ language. | Proprietary Open Source | Open Watcom 2.0 }} {{librow | JUCE | http://www.juce.com/ | An extensive, mature, cross-platform C++ toolkit | GPL License}} {{librow | Kangaru | https://github.com/gracicot/kangaru | A dependency injection container for C++11 and C++14 | MIT License}} {{librow | libsourcey | http://sourcey.com/libsourcey/ | Cross-platform C++11 library for high speed networking and media encoding. HTTP, WebSockets, TURN, STUN, Symple and more...}} {{librow | LLNL/units | https://github.com/LLNL/units | A run-time C++ library for working with units of measurement and conversions between them and with string representations of units and measurements | BSD 3-Clause "New" or "Revised" License | CMake}} {{librow | Loki | http://loki-lib.sourceforge.net/ | design patterns}} {{librow | nonstd-lite | https://github.com/martinmoene/nonstd-lite | Parent of *-lite repositories, a migration path to post-C++11 features for pre-C++11 environments | Boost License}} {{librow | nytl | https://github.com/nyorain/nytl | Generic C++17 header-only utility template library. | Boost License}} {{librow | OnPosix | http://onposix.sourceforge.net/ | C++ library providing several abstractions (e.g., threading, networking, logging, IPC, etc.) on POSIX platforms.}} {{librow | Reason | http://www.reasoning.biz/index.htm | xml, xpath, regex, threads, sockets, http, sql, date-time, streams, encoding and decoding, filesystem, compression | GPL License}} {{librow | SaferCPlusPlus | https://github.com/duneroadrunner/SaferCPlusPlus | vector. | Boost License}} {{librow | Smart Enum | https://github.com/krabicezpapundeklu/smart_enum | "to_string", "from_string" and more for your enums. | Boost License}} {{librow | units | https://github.com/nholthaus/units | A compile-time, header-only, dimensional analysis and unit conversion library built on c++14 with no dependencies | MIT License}} {{librow | yaal | https://github.com/AmokHuginnsson/yaal | '''Y'''et '''A'''nother '''A'''bstraction '''L'''ayer - algorithms, collections, arbitrary precision calculation, generic-DSL grammar driven parsers and more | CC BY-ND-NC 4.0 | CMake }} {{librow | Yato | https://github.com/agruzdev/Yato | type-safe config interface. | Apache-2.0 License | CMake }} {{librow | yomm2 | https://github.com/jll63/yomm2 | Open multi-methods for C++17 | Boost License}} {{libtableend}} ==GPS== {{libtablebegin}} {{librow | gpsd | https://gpsd.gitlab.io/gpsd/ | documentation Doc]) ([http://download.savannah.gnu.org/releases/gpsd/ Src]) | //www.openhub.net/licenses/bsd_2clause_ish BSD 2-clause] | scons }} {{libtableend}} ==Graphic user interface== {{libtablebegin}} {{librow | Dear ImGui | https://github.com/ocornut/imgui | A bloat-free graphical user interface library that is highly optimized.}} {{librow | FLTK | http://www.fltk.org/ | A cross-platform C++ GUI toolkit (Linux, Windows, MacOS) that provides modern GUI functionality, and supports 3D graphics via OpenGL/GLUT. Designed to be small and modular. Includes an UI builder. | LGPL ver.2 }} {{librow | nana | http://nanapro.org/ | //qpcr4vir.github.io/nana-doxy/html/ (Doc)] | Boost License }} {{librow | nanogui | https://github.com/wjakob/nanogui | //nanogui.readthedocs.io/en/latest/ (Doc)] }} {{librow | OWLNext | http://sourceforge.net/projects/owlnext/ | //en.wikipedia.org/wiki/Object_Windows_Library OWL] for writing GUI applications in standard C++ on Windows}} {{librow | tiny file dialogs | http://tinyfiledialogs.sourceforge.net | a single C C++ cross-platform file (no init, no main loop, 6 modal function calls)}} {{librow | U++ | https://www.ultimatepp.org | //github.com/ultimatepp/ultimatepp (Src)] | BSD-3-Clause | Makefile}} {{librow | WxWidgets | http://wxwidgets.org/ | //docs.wxwidgets.org (Doc)] | Modified LGPL | CMake, Makefile }} {{librow | xtd | https://github.com/gammasoft71/xtd | //codedocs.xyz/gammasoft71/xtd/index.html (Doc)] | MIT License | CMake}} {{libtableend}} {{anchor | CopperSpice {{libtablebegin}} {{librow | CopperSpice | https://www.copperspice.com/ | //github.com/copperspice/copperspice (Src)] | LGPL-2.1 | CMake }} {{librow | CsSignal | https://github.com/copperspice/cs_signal | Standalone C++ thread aware signal/slot library | LGPL-2.1 | CMake}} {{librow | CsString | https://github.com/copperspice/cs_string | Standalone C++ unicode aware string library | LGPL-2.1 | CMake}} {{librow | libGuarded | https://github.com/copperspice/libguarded | Standalone C++ multithreading library for managing access to shared data | LGPL-2.1 | CMake}} {{libtableend}} {{anchor | GTK+ {{libtablebegin}} {{librow | evince | http://www.gnome.org/projects/evince/ }} {{librow | flowcanvas | http://drobilla.net/software/flowcanvas/ }} {{librow | glibmm | http://www.gtkmm.org/ }} {{librow | goocanvasmm | http://live.gnome.org/GooCanvas }} {{librow | gtkmm | http://gtkmm.org | //www.gtk.org/ GTK+] GUI library. | //gtkmm.org/en/license.shtml LGPL] }} {{librow | libglademm | http://www.gtkmm.org/ }} {{librow | libgnomecanvasmm | http://www.gtkmm.org/ }} {{librow | webkitgtk | http://webkitgtk.org/ }} {{libtableend}} {{anchor | Qt {{libtablebegin}} {{librow | libdbusmenu-qt | https://launchpad.net/libdbusmenu-qt | A small library designed to make sharing and displaying of menu structures over DBus simple and easy to use. It works for both QT and GTK+ and makes building menus simple. }} {{librow | Qt | http://qt.io/ | //qt.io/download (Src)] }} {{librow | QuickQanava | https://github.com/cneben/QuickQanava | C++14 network/graph visualization library / Qt node editor. | BSD License 2.0 | CMake }} {{librow | qwt5 | http://qwt.sourceforge.net | Qt Widgets for Technical Applications }} {{librow | qwtplot3d | http://qwtplot3d.sourceforge.net }} {{libtableend}} {{anchor | U++ {{libtablebegin}} {{librow | U++ | https://www.ultimatepp.org/ | //www.ultimatepp.org/www$uppweb$download$en-us.html (Src/Bin) ] | BSD }} {{librow | upp-components | https://github.com/ismail-yilmaz/upp-components | A collection of 3rd party packages for U++ like TerminalCtrl, MessageCtrl etc.. | BSD-3-Clause}} {{libtableend}} ==Graphics== {{libtablebegin}} {{librow | bgfx | https://github.com/bkaradzic/bgfx | Powerful cross-platform graphics rendering library, support platforms include Windows Mac Linux iOS Android Web, rendering backend including DX, opengl, metal webgl and so on. }} {{librow | cairomm | http://cairographics.org/cairomm/ | X Window, Quartz, Win32, image buffers, PostScript, PDF, SVG, OpenGL (experimental). | //www.gnu.org/licenses/lgpl.html LGPL] }} {{librow | dfpsr | https://dawoodoz.com/dfpsr.html | 2D, 3D and isometric software renderer with desktop GUI toolkit, minimalistic dependency, designed for long time maintenance and can run without any 3D accelerated drivers | zlib license }} {{librow | gegl | http://gegl.org/ | //gitlab.gnome.org/GNOME/gegl/ (Src)] | LGPL }} {{librow | io2d | https://github.com/cpp-io2d/P0267_RefImpl | //wg21.link/p0267 2D graphics API for ISO C++] | Boost License | CMake }} {{librow | nanovg | https://github.com/memononen/nanovg | 2D drawing library based on openGL/DX/metal. }} {{librow | nux | http://launchpad.net/nux | An OpenGL toolkit | LGPL v3 }} {{librow | pangomm | https://gitlab.gnome.org/GNOME/pangomm | //gitlab.gnome.org/GNOME/pango (Src)] | //gitlab.gnome.org/GNOME/pangomm/-/blob/master/COPYING LGPL v2.1] | Makefile }} {{librow | Skia | https://skia.org/ | Skia_Graphics_Engine | Skia is used in Google Chrome, Chrome OS, Mozilla Firefox, Android, LibreOffice, Flutter, etc. Skia has several back-ends: software rasterization, (PDF) output, OpenGL, SVG, etc. ]] | New_BSD_License | New BSD License }}
; Formats
; Plotting
; Automata theory
; Class Library for Numbers
; Computational geometry
; Graph theory
; Linear algebra
Main_Page#Documentation ]] | matrices, vectors, numerical solvers, and related algorithms. | MPL2 | CMake, Conan}} {{librow | ETL | https://github.com/wichtounet/etl}} {{librow | IT++ | http://sourceforge.net/projects/itpp/}} {{librow | Matrix | https://github.com/mlcpp/Matrix | Easy-to-use Scientific Computing library in/for C++ available for Linux and Windows. | MIT License | CMake}} {{librow | PETSc | https://www.mcs.anl.gov/petsc/ | A suite of data structures and routines for the parallel solution of scientific applications modeled by partial differential equations. It supports MPI, and GPUs through CUDA or OpenCL, as well as hybrid MPI-GPU.}} {{librow | xtensor | https://xtensor.readthedocs.io/en/latest/ | A C++ library meant for numerical analysis with multi-dimensional array expressions. | BSD }} {{libtableend}} {{anchor | Machine Learning {{libtablebegin}} {{librow | Dlib | http://dlib.net/ml.html | machine learning tools}} {{librow | FANN | http://leenissen.dk/fann/wp/ | Fast Artificial Neural Network Library}} {{librow | liblinear | http://www.csie.ntu.edu.tw/~cjlin/liblinear/ }} {{librow | libtorch | https://pytorch.org/ | C++ frontend to the popular PyTorch Python library (backend is written in C++) | BSD-style license | CMake}} {{librow | MLPACK | http://mlpack.org | machine learning package}} {{librow | Shogun | http://shogun-toolbox.org | large scale machine learning toolbox }} {{librow | stats++ | http://statsxx.com/ }} {{librow | tensorflow | https://github.com/tensorflow/tensorflow | //www.tensorflow.org/api_docs/cc C++ API] and written mainly in C++ | Apache-2.0 License }} {{libtableend}} {{anchor | Numeral Calculations {{libtablebegin}} {{librow | LibBF | https://bellard.org/libbf | An arbitrary precision numerical calculation library developed by Bellard with a sample program that calculates pi to billions of bits}} {{libtableend}} {{anchor | Optimization {{libtablebegin}} {{librow | ceres-solver | https://github.com/ceres-solver/ceres-solver | Open-source C++ library for modeling and solving large, complicated optimization problems. It is a feature rich, mature and performant library which has been used in production at Google since 2010. | Apache License | CMake, Conan }} {{librow | OptimLib | https://github.com/kthohr/optim | A C++11 library of numerical optimization methods for nonlinear functions.}} {{libtableend}} ==Metaprogramming== {{libtablebegin}} {{librow | Boost.CallableTraits | https://www.boost.org/doc/libs/release/libs/callable_traits/doc/html/index.html | c_plus_plus_open_source_libraries | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.Hana | https://www.boost.org/doc/libs/release/libs/hana/doc/html/index.html | New metaprogramming library for both types and values | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.Metaparse | https://www.boost.org/doc/libs/release/doc/html/metaparse.html | Compile-time parser library, producing types, values, and metafunctions from compile-time strings | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.Mp11 | https://www.boost.org/doc/libs/release/libs/mp11/doc/html/mp11.html | c_plus_plus_open_source_libraries | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.MPL | https://www.boost.org/doc/libs/release/libs/mpl/doc/index.html | Original metaprogramming library, targeted at C++03, slow | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.PFR | https://www.boost.org/doc/libs/release/doc/html/boost_pfr.html | visiting members of a user defined type by index, IO streaming. | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Boost.Proto | https://www.boost.org/doc/libs/release/doc/html/proto.html | A library for building expression template-backed EDSLs | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Brigand | https://github.com/edouarda/brigand | Uses eager metafunctions, optimized for best performance}} {{librow | CoMeta | https://github.com/kfrlib/cometa | Lightweight, header-only C++14 metaprogramming library}} {{librow | Meta | https://github.com/ericniebler/meta | Uses eager metafunctions, middle ground between metal and brigand wrt performance}} {{librow | Metal | https://github.com/brunocodutra/metal | Uses eager metafunctions, 100% SFINAE-friendly}} {{librow | refl-cpp | https://github.com/veselink1/refl-cpp | A modern compile-time reflection library for C++ with support for overloads, templates, attributes and proxies}} {{librow | Refureku | https://github.com/jsoysouvanh/Refureku | C++17 runtime reflection and code generation library | MIT License | CMake}} {{librow | visit_struct | https://github.com/garbageslam/visit_struct | A miniature reflection library, providing structure visitors for C++11/14. Self-contained, 200-400 lines of code depending how you count.}} {{libtableend}} ==PDF== {{libtablebegin}} {{librow | HARU | http://libharu.org/ }} {{librow | JagPDF | http://www.jagpdf.org/ }} {{librow | PoDoFo | http://podofo.sourceforge.net/ }} {{libtableend}} ==Physics and Simulations== {{libtablebegin}} {{librow | Bullet | https://pybullet.org/wordpress | Physics simulation for games, visual effects, robotics and reinforcement learning}} {{librow | HELICS | https://github.com/GMLC-TDC/HELICS | Co-simulation framework for synchronizing time and exchanging data between different types of simulators | BSD 3-Clause "New" or "Revised" License | CMake}} {{librow | ProjectCHRONO | http://projectchrono.org | An Open Source Multi-physics Simulation Engine}} {{librow | ReactPhysics3D | https://www.reactphysics3d.com | C++ physics engine library for 3D simulations and game}} {{libtableend}} ==Serialization== {{libtablebegin}} {{librow | Boost.Serialization | https://www.boost.org/doc/libs/release/libs/serialization/ | c_plus_plus_open_source_libraries | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | C++ XML objects | http://cppxmlobj.sourceforge.net}} {{librow | cereal | http://uscilab.github.io/cereal/ | C++11 serialization | BSD license }} {{librow | cppcodec | https://github.com/tplgy/cppcodec | Header-only C++11 library to encode/decode base64, base32 and hex with consistent, flexible API (MIT License)}} {{librow | GPDS | https://github.com/simulton/gpds | General purpose data serializer to serialize objects to and from XML. Uses TinyXML under the hood.}} {{librow | gSOAP | http://gsoap2.sourceforge.net | accurate XML serialization}} {{librow | iguana | https://github.com/qicosmos/iguana | JSON, XML, user-defined. | Apache-2.0 License | CMake }} {{librow | jios | https://github.com/castedo/jios | JSON serialization | MIT License | CMake}} {{librow | libs11n | http://www.s11n.net}} {{librow | protobuf | https://github.com/google/protobuf/ }} {{librow | rpnx-serial | https://github.com/Exaeta/rpnx-serial | vector, etc.}} {{librow | sweet_persist | http://www.sweetsoftware.co.nz/persist_overview.html}} {{librow | ThorsSerializer | https://github.com/Loki-Astari/ThorsSerializer | C++ Serialization library for JSON | MIT License | Makefile}} {{librow | yaml-cpp | https://github.com/jbeder/yaml-cpp }} {{librow | YAS | https://github.com/niXman/yas | no third-party libraries dependencies. Archives can be binary, text, JSON | Boost License | Header only }} {{libtableend}} {{anchor | Binary serialization {{libtablebegin}} {{librow | binn | https://github.com/liteserver/binn | A binary serialization library designed to be compact, fast, and easy to use, itself an implementation of the same name format. }} {{librow | blobify | https://github.com/neobrain/blobify | C++17 header-only, infers the serialized layout from the structure definition alone. | Boost License | CMake }} {{librow | bson-cxx | https://github.com/dwight/bson-cxx | C++ implementation in BSON format. }} {{librow | fast_ber | https://github.com/Samuel-Tyler/fast_ber | High-performance serialization using BER/DER encoding rules. Encoding layout is defined by ASN.1 schemas. Follows modern C++ practices, written in C++11. }} {{librow | UBjsonCpp | https://github.com/WhiZTiM/UbjsonCpp | High-performance UBJson read-write library based on C++14}} {{libtableend}} ==Sorting== {{libtablebegin}} {{librow | Cpp-sort | https://github.com/Morwenn/cpp-sort | A collection of various sorting algorithms in a simple package. | MIT license }} {{librow | Indiesort | https://plflib.org/indiesort.htm | sort (and other random-access sort methods) with non-random-access containers. It also increases the performance of sorting large types in random-access containers and arrays | zlib license }} {{librow | Timsort | https://github.com/gfx/cpp-TimSort | sort, for reversed or semi-sorted data. | MIT }} {{libtableend}} ==System== {{libtablebegin}} {{librow | Infoware | https://github.com/ThePhD/infoware | C++ Library for pulling system and hardware information, without hitting the command line. | Creative Commons v1.0 License | CMake }} {{libtableend}} ==Terminal== {{libtablebegin}} {{librow | cli | https://github.com/daniele77/cli | A cross-platform header-only library for interactive command line interfaces in modern C++. | //github.com/daniele77/cli/blob/master/LICENSE BSL-1.0] | make, cmake, nmake, vcpkg }} {{librow | cwidget | https://salsa.debian.org/cwidget-team | high-level terminal interface library for C++, modeled on GTK+ and Qt, but using `curses` as its display layer | GPL v2.0 | make }} {{librow | replxx | https://github.com/AmokHuginnsson/replxx | A readline and libedit replacement that supports UTF-8, syntax highlighting & hints. }} {{libtableend}} ==Testing== {{libtablebegin}} {{librow | bandit | http://banditcpp.github.io/bandit/ | Human-friendly unit testing for C++11}} {{librow | Boost.Test | https://www.boost.org/libs/test/ | c_plus_plus_open_source_libraries | //www.boost.org/LICENSE_1_0.txt BSL-1.0] }} {{librow | Catch2 | https://github.com/catchorg/Catch2}} {{librow | cppunit | http://sourceforge.net/projects/cppunit/}} {{librow | CUTE | https://github.com/PeterSommerlad/CUTE | //cevelop.com Cevelop] for TDD | MIT License }} {{librow | doctest | https://github.com/onqtam/doctest | The lightest feature-rich C++ single-header testing framework for unit tests and TDD | MIT License | CMake }} {{librow | ELFspy | https://github.com/mollismerx/elfspy | Testing in isolation with fakes and spies - Linux only}} {{librow | Google Test | https://github.com/google/googletest/}} {{librow | lest | https://github.com/martinmoene/lest | A modern, C++11-native, single-file header-only, tiny framework for unit-tests, TDD and BDD (includes C++98 variant).}} {{librow | liblittletest | https://github.com/etr/liblittletest | Portable, one file header-only testing framework}} {{librow | tunit | https://github.com/gammasoft71/tunit | //gammasoft71.wixsite.com/tunit Office site] | MIT License | CMake}} {{libtableend}} ====See also==== {{dsc begin}} {{dsc | C.2B.2B | List of C++ unit testing frameworks at Wikipedia }}
; Coding
; Diff/Patch
; Format
family. ]] | //github.com/fmtlib/fmt/blob/master/LICENSE.rst Victor Zverovich Licence] | CMake, Conan}} {{libtableend}} {{anchor | Parse {{libtablebegin}} {{librow | BNFlite | https://github.com/r35382/bnflite | A single file lightweight grammar parser library | MIT License | Header only }} {{librow | PEGTL | https://github.com/taocpp/PEGTL | Parsing Expression Grammar Template Library | MIT License | Header only }} {{libtableend}} {{anchor | Search {{libtablebegin}} {{librow | clucene | http://clucene.sourceforge.net | //clucene.sourceforge.net/doc/html/ Doc]) | LGPL v2.1 | CMake }} {{librow | Step | https://github.com/storm-ptr/step | Suffix_tree | suffix tree, Manber's algorithm for constructing Suffix_array | suffix array. ]] | MIT License | Header only }} {{librow | xapian | https://xapian.org/ | //xapian.org/docs/ Doc]) | GPL v2+ | make }} {{libtableend}} {{anchor | Template Engine {{libtablebegin}} {{librow | inja | https://github.com/pantor/inja | Header-only Template Engine for C++17. | MIT License | CMake, Conan, vcpkg, etc. }} {{librow | Jinja2C++ | https://github.com/jinja2cpp/Jinja2Cpp | C++14/17 implementation of Jinja2 templates | MPL-2.0 License | CMake, Conan }} {{libtableend}} ==Version Control== {{libtablebegin}} {{librow | coo-semver | https://github.com/easz/cpp-semver | The C++ operation library for semantic version numbers. }} {{librow | LibGit2 | https://libgit2.org/ | Version Control System Git's core library. }} {{libtableend}} ==Video== {{libtablebegin}} {{librow | crystalhd | http://www.broadcom.com/support/crystal_hd/ }} {{librow | gstreamermm | http://gstreamer.freedesktop.org/ }} {{librow | libmatroska | http://www.matroska.org/ }} {{librow | libVLC | http://wiki.videolan.org/LibVLC }} {{librow | mjpegtools | http://mjpeg.sourceforge.net/ }} {{libtableend}} ==Web== {{libtablebegin}} {{librow | Chromium Embedded | https://bitbucket.org/chromiumembedded/cef/ }} {{librow | cpp-jwt | https://github.com/arun11299/cpp-jwt}} {{librow | Drogon | https://github.com/an-tao/drogon | A C++14/17 based HTTP web application framework running on Linux/macOS/Unix/Windows.}} {{librow | libhttpserver | https://github.com/etr/libhttpserver}} {{librow | libkcddb | https://www.kde.org/ }} {{librow | liblastfm | https://www.last.fm/ }} {{librow | libmusicbrainz5 | https://musicbrainz.org/doc/libmusicbrainz }} {{librow | libnavajo | https://github.com/titi38/libnavajo }} {{librow | oatpp | https://oatpp.io/ | Light and powerful web-framework for IoT and high-performance web-services. Zero-dependency and easy-portable.}} {{librow | QtWebApp | http://stefanfrings.de/qtwebapp/index-en.html | HTTP(s) Server in C++ inspired by Java Servlets}} {{librow | Tufão | https://github.com/vinipsmaker/tufao }} {{librow | uri-template | https://github.com/TinkoffCreditSystems/uri-template | URI Templates expansion and reverse-matching for C++ | Apache License 2.0 | CMake}} {{librow | Wt | http://www.webtoolkit.eu/wt/ | //www.webtoolkit.eu/wt/download (Src)] | GNU GPL or Commercial }} {{libtableend}} ===See also=== {{dsc begin}} {{dsc see c | c/links/libs | Non-ANSI/ISO Libraries | nomono=true}} {{dsc end}} {{langlinks | de | es | fr | it | ja | pt | ru | [[ zh}}