A list of open-source C++ libraries
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.
[edit] Package managers
Package manager | Description |
---|---|
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 | Cmake package retrieval. This can be used to download and install cmake packages. |
cmodule | Non-intrusive cmake dependency management. |
conan | Decentralized, open-source (MIT), C/C++ package manager. |
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 | A cmake driven cross-platform package manager for C/C++ projects. |
spack | A package manager for supercomputers, Linux, and macOS. It makes installing scientific software easy. It isn’t tied to a particular language. |
teaport | A cocoapods inspired dependency manager. |
vcpkg | A C/C++ package manager for Windows, Linux, and macOS. |
xmake | A cross-platform Lua-based C/C++ build tool and package manager. |
[edit] Libraries
[edit] Audio
Library | Description | License | Configuration |
---|---|---|---|
Amplitude Audio SDK | A cross-platform audio engine designed with the needs of games in mind. (Src) | Apache-2.0 | cmake, vcpkg |
Aquila | An open-source and cross-platform DSP library for C++11. | MIT | cmake |
Aubio | A C/Python library for audio and music analysis. (Src) | GPL-3.0 | make |
audioFlux | A C library for audio and music analysis, feature extraction. | MIT | |
Essentia | An open-source library and tools for audio and music analysis, description and synthesis (MIR) (Src) | Affero GPLv3 | |
FFTW | A library for computing the DFT (SSE/SSE2/AVX/Altivec/ARM Neon). (Src) | GPL-2.0 | cmake |
FMOD | An easy to use cross-platform audio engine and audio content creation tool for games. | Free for non-commercial/Commercial | cmake |
KFR | A fast, modern, C++17, open-source, cross-platform DSP/DFT framework, supports Audio resampling, FIR/IIR filters, Biquad, (SSE, AVX, AVX-512, ARM NEON). (Src) | GPL-2.0 | cmake |
libsoundio | A C library for cross-platform real-time audio input and output. (Src) | MIT | cmake |
Maximilian | C++ Audio and Music DSP Library. | MIT | cmake |
Miniaudio | An audio playback and capture C library. (Src) | Unlicense | single source file |
ni-media | C++ library for reading and writing audio files. | MIT | cmake, vcpkg |
OpenAL | A cross-platform audio API. | BSD/LGPL/Proprietary | cmake |
PortAudio | PortAudio is a free, cross-platform, open-source, audio I/O library. (Src) | MIT | cmake, vcpkg |
rnnoise | Recurrent neural network for audio noise reduction. | BSD-3-Clause | make |
SELA | SimplE Lossless Audio. | MIT | cmake |
SoLoud | Easy, portable audio engine for games. | zlib | |
Soundtouch | The SoundTouch is an open-source cross-platform audio processing library for changing the Tempo, Pitch and Playback Rates of audio streams or audio files. (Src) | LGPL-2.1 | make |
Tonic | Easy and efficient audio synthesis in C++. | Unlicense | |
Verovio | A fast and lightweight music notation engraving library. (Src) | LGPL | cmake, qmake |
Wav2Letter++ | A fast speech recognition toolkit written entirely in C++ and uses the ArrayFire tensor library and the flashlight machine learning library for maximum efficiency. | BSD License | cmake |
- CD
Library | Description | License | Configuration |
---|---|---|---|
libkcompactdisc | A library for interfacing with CDs | GPL v2.0 | cmake |
- Fingerprinting
Library | Description | License | Configuration |
---|---|---|---|
chromaprint | The Chromaprint is an audio fingerprint library designed to identify near-identical audio. It trades precision and robustness for search performance. Chromaprint can use multiple FFT libraries - FFmpeg, FFTW3, KissFFT or vDSP. (Src) | MIT, LGPL 2.1 | cmake |
libmusicbrainz | The MusicBrainz Client Library (libmusicbrainz), also known as mb_client, is a development library geared towards developers who wish to add MusicBrainz lookup capabilities to their applications. The library supports Windows, Linux and Mac OS X (Src) | LGPL-2.1 | cmake |
libofa | An open-source audio fingerprint by MusicIP | APL | make |
- Formats
Library | Description | License | Configuration |
---|---|---|---|
AudioFile | A simple C++ library for reading and writing audio files. | MIT | cmake |
audio_file | A library that handles reading and writing audio files in many common formats. (Src) | LGPL-2.1 | make |
dr_libs | Single-file audio (FLAC, MP3, WAV) decoding libraries for C and C++. | Unlicense | |
flac | The FLAC stands for Free Lossless Audio Codec, meaning that audio compressed in FLAC has no loss in quality. FLAC stands out as the fastest and most widely supported lossless audio codec, non-proprietary, and unencumbered by patents. | Open Source, BSD, GPL | |
LAME | LAME is a high quality MPEG Audio Layer III (MP3) encoder. | LGPL | |
libsndfile | A C library with C++ wrapper for reading and writing files containing sampled sound (e.g. WAV, AIFF) through one standard library interface. (Src) | LGPL-2.1 | cmake, make, vcpkg |
minimp3 | Minimalistic MP3 decoder | CC0-1.0 | header-only |
Opus | A totally open, royalty-free, highly versatile audio codec. | BSD | cmake |
Vorbis | Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free, general-purpose compressed audio format. | BSD | cmake |
- Tagging
Library | Description | License | Configuration |
---|---|---|---|
id3lib | An open-source, cross-platform library for reading, writing, and manipulating ID3v1 and ID3v2 tags, and retrieving some basic mp3 header info like bitrate. However, we now recommend moving to taglib :) | LGPL v2 | |
taglib | The TagLib Audio Metadata Library is a library for reading and editing the meta-data of several popular audio formats: ID3v1, ID3v2 for MP3 files, Ogg Vorbis comments and ID3 tags and Vorbis comments in FLAC, MPC, Speex, WavPack, TrueAudio, WAV, AIFF, MP4 and ASF files. (Src) | LGPL and MPL v1.1 |
[edit] Benchmarking
Library | Description | License | Configuration |
---|---|---|---|
benchmark | A library to benchmark code snippets, similar to unit tests | Apache 2.0 | cmake |
Celero | A feature-rich C++ Benchmark Authoring Library/Framework. Supports Windows, Linux, and OSX using C++11. | Apache | cmake |
Criterion | A micro-benchmarking library for modern C++ | MIT | header-only; cmake |
gperftools | The '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" | configure |
nanobench | A simple, fast, accurate single-header micro-benchmarking functionality for C++11/14/17/20. (Src) | MIT | header-only; cmake |
picobench | A tiny (micro) micro-benchmarking library | MIT | header-only; cmake |
plf::nanotimer | A lowest-overhead, cross-platform simple timer class for benchmarking. | zlib | header-only |
[edit] Communication
Library | Description | License | Configuration |
---|---|---|---|
ACE | Asynchronous networking, event de-multiplexing, messaging (Src) (Doc) | Custom | make |
Apache Thrift | The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages. (Src) | Apache-2.0 | cmake, vcpkg |
Boost.Asio | Asynchronous and synchronous networking, timers, serial I/O | BSL-1.0 | |
Boost.Beast | An HTTP and WebSocket library built on top of Boost.Asio | BSL-1.0 | |
Breep | An event based, high-level, peer-to-peer library, allowing users to directly send and receive objects. | European Union Public License 1.1 | cmake |
brpc | An industrial-grade RPC framework used throughout Baidu, with 1,000,000+ instances and thousands kinds of services. (Src) (Doc) | Apache 2.0 | cmake |
C++ REST SDK | An asynchronous HTTP client and listener, asynchronous Stream, URI, JSON | MIT | cmake |
cpp-httplib | A C++11 single-file header-only cross platform HTTP/HTTPS library | MIT | header-only; cmake |
cpp-netlib | A C++ Network Library | BSL-1.0 | cmake |
cppsimpleuri | A modern C++ uri & query parser | MIT | cmake |
cpr | A modern C++ HTTP requests library | MIT | cmake |
Crow | A C++ micro web framework (inspired by Python Flask) | BSD-3-Clause | header-only; cmake |
curlpp | C++ wrapper for libcURL (CURL library). (Src) | cmake, vcpkg | |
DumaisLib | Various utilities such as WebServer, JSON, WebSocket server, REST framework (a library for creating a REST API in your c++ app) | MIT | make |
EasyHttp | A cross-platform HTTP client library with a focus on usability and speed, supporting http response caching and more. | MIT | cmake |
eCAL | A high performance inter-process communication library | Apache 2.0 | cmake |
fineftp-server | An FTP-server library for Windows and Unix | MIT | cmake |
FPNN | Fast Programmable Nexus Network. High performance fully asynchronous RPC service framework. Simultaneously supporting HTTP, WebSocket, TCP, and reliable UDP. Support the development of ultra-high load servers, with corresponding client SDKs. | 未知 | make |
gRPC | A modern open-source high performance RPC framework that can run in any environment. (Src) (Doc) | Apache-2.0 | bazel, cmake, vcpkg |
gsoap | A C/C++ development toolkit for XML data bindings, fast WSDL/SOAP/XML Web services, WS-Security, JSON/XML-RPC RESTful services | GPLv2 | |
hmbdc | A lightweight and high performance C++17 message pub/sub middleware framework/lib | header-only | |
HTTPP | A simple, C++14, production ready HTTP-server built on top of Boost and a client built on top of libcurl. | BSD 2-Clause "Simplified" | cmake, make |
IXWebSocket | An open-source WebSocket + HTTP library without dependency, supports SSL and the per message deflate WebSocket extension. | BSD 3-Clause "New" or "Revised" | cmake, make |
KCP | A fast and reliable ARQ protocol that helps applications to reduce network latency. | MIT | cmake |
libashttp | An asynchronous HTTP client library | GNU Lesser General Public v3.0 | |
libjson-rpc-cpp |
A framework that provides cross-platform JSON-RPC (remote procedure call) support for C++, fully JSON-RPC 2.0 & 1.0 compatible. |
MIT | cmake, conan |
libnavajo | A 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 |
libtins | A network packet crafting and sniffing library (Src) (Doc) | BSD-2 | cmake, vcpkg |
LiteNetLibPP | A lightweight reliable UDP library for games | MIT | cmake |
mailio | MIME and email library | BSD 2-Clause "Simplified" | cmake |
nanomsg | A fast message queue, zeromq successor | ||
netif | A C++14 library for getting network addresses on Windows, Linux, macOS, and FreeBSD. | BSD 3-Clause "New" or "Revised" | header-only; cmake |
nghttp2 | HTTP/2 C Library and tools (server, client, proxy and benchmarking tools) | MIT | cmake, configure |
ngrest | A fast and easy in use JSON RESTful Web Services Framework | Apache 2.0 | cmake |
nng | A fast message queue, nanomsg successor | ||
Oat++ | A Web Framework: REST-API and Request implementation (Src) (Doc) | Apache 2.0 | cmake |
omniORB | The fastest, complete and portable CORBA ORB implementation in C++ | ||
OpenDDS | DDS (Data Distribution Service) implementation | ||
Paho MQTT | A modern C++ client for MQTT from Eclipse | cmake | |
paozhu | A C++20 Web Framework Support HTTP/2 ORM WebSocket | MIT | cmake |
PcapPlusPlus | Multi-platform C++ network sniffing and packet parsing and crafting framework. Provides C++ wrappers for many popular packet processing engines such as libpcap, Npcap, WinPcap, DPDK, AF_XDP, and PF_RING. (Src) | Unlicense | conan, homebrew, cmake, vcpkg |
POCO | Networking: encryption, HTTP; Zip files (Doc) | ||
rest_rpc | A C++11, high performance, cross-platform, easy to use RPC framework. | MIT | cmake |
restbed | A cross-platform feature rich framework brings asynchronous RESTful functionality (secure communication over HTTP) to C++14 applications. | License | cmake |
restc-cpp | Accessing JSON API's from C++. HTTP Client, native C++ class to/from JSON serialization, asynchronous IO trough boost::asio coroutines. C++14. | MIT | cmake |
restful_mapper | ORM for consuming RESTful JSON APIs in C++ | cmake, make | |
seastar | A high performance server-side application framework, based on C++14/C++17. | Apache 2.0 | cmake, etc. |
Silicon | The Silicon C++14 Web Framework: Fast and Robust Web APIs | MIT | cmake |
sockpp | A simple, modern C++ socket library | BSD 3-Clause "New" or "Revised" | cmake |
stream-client | A lightweight Boost-based client-side socket/connector/socket pool/resolver | Apache 2.0 | header-only; cmake |
tacopie | A C++11 TCP Library | MIT | cmake |
TAO | CORBA | ||
taox11 | A C++11 based CORBA implementation | MIT | |
Unicomm | Asynchronous networking, high-level TCP communication framework | ||
uvw | A libuv (cross-platform asynchronous I/O) wrapper in C++17 | MIT | header-only; cmake |
WNetWrap | A WinInet wrapper in C++ | MIT | |
wvstreams | A C++ networking library including UniConf and a convenient D-Bus API | GPL | |
zeromq | A fast message queue |
[edit] Concurrency
Library | Description | License | Configuration |
---|---|---|---|
AdaptiveCpp | Provides a SYCL and C++ parallel STL offloading compiler and runtime system for CPUs and GPUs from NVIDIA, AMD, Intel | BSD-2-Clause | cmake |
Asyncpp | An asynchronous c++ library that provides various concurrent operations | MIT | cmake |
BlockingCollection | C++11 thread safe, multi-producer, multi-consumer blocking queue, stack & priority queue class | GPL-3.0 | header-only |
Boost.Atomic | Provides atomic data types and operations on these data types, as well as memory ordering constraints required for coordinating multiple threads through atomic variables. | BSL-1.0 | |
Boost.Compute | A GPU/parallel-computing library for C++ based on OpenCL. | BSL-1.0 | cmake |
Boost.Context | A C++11 library that provides a cooperative multitasking abstraction on a single thread. | BSL-1.0 | |
Boost.Interprocess | Simplifies the use of interprocess communication and synchronization mechanisms and offers a wide range of them: shared memory, memory-mapped files, semaphores, mutexes, condition variables and upgradable mutex types, named versions of the synchronization objects, file locking, message queues. | BSL-1.0 | |
Boost.Lockfree | Provides non-blocking (aka lock-free) concurrent data structures: a queue, a stack, and a ringbuffer (spsc_queue). | BSL-1.0 | |
Boost.MPI | A C++-friendly interface to the standard Message Passing Interface | BSL-1.0 | |
Boost.Thread | Enables the use of multiple threads of execution with shared data and means for synchronizing data between the threads. | BSL-1.0 | |
concurrencpp | Modern concurrency for C++. Tasks, executors, timers and C++20 coroutines. | MIT | cmake |
dispenso | High-performance concurrency for C++. parallel_for, Futures, pipelines, timers, timed/periodic tasks, and concurrent data structures. | MIT | cmake |
Highway | Provides performance-portable, length-agnostic SIMD/vector intrinsics. Supports: SSE3, SSE4, AVX*, NEON, SVE*, WASM SIMD, RISC-V, POWER. (Doc) | Apache-2.0 | cmake |
HPX | A general purpose C++ runtime system for parallel and distributed applications of any scale (Doc) | BSL-1.0 | cmake, vcpkg |
Intel TBB | Intel® TBB is a cross-platform C++ library for shared memory parallel programming and heterogeneous computing. The library provides: generic parallel algorithms, concurrent containers, a scalable memory allocator, work-stealing task scheduler, and low-level synchronization primitives. (Src) (Doc) | Apache-2.0 or Commercial | cmake, make |
KOKKOS | A programming model for writing performance portable HPC applications, using CUDA, HIP, SYCL, HPX, OpenMP and C++ threads as backends (Doc) | Custom | cmake, make |