A list of open source C++ libraries
From cppreference.com
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.
Package managers
Audio
Library | Description | License | Configuration |
---|---|---|---|
Aquila | cross-platform DSP library | ||
FFTW | library for computing the DFT | ||
KFR | Fast, modern DSP framework, DFT/FFT, Audio resampling, FIR/IIR filters, Biquad | ||
soundtouch |
- Fingerprinting
Library | Description | License | Configuration |
---|---|---|---|
chromaprint | |||
libmusicbrainz | |||
libofa |
- Formats
Library | Description | License | Configuration |
---|---|---|---|
audiofile | |||
flac | |||
libsndfile |
- Tagging
Library | Description | License | Configuration |
---|---|---|---|
id3lib | |||
taglib |
- CD
Library | Description | License | Configuration |
---|---|---|---|
libkcompactdisc |
Benchmarking
Library | Description | License | Configuration |
---|---|---|---|
benchmark | A library to benchmark code snippets, similar to unit tests | Apache License 2.0 | CMake |
Celero | Apache License | CMake | |
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 |
plf::nanotimer | Lowest-overhead, cross-platform simple timer class for benchmarking. | zlib license |
Communication
Library | Description | License | Configuration |
---|---|---|---|
ACE | asynchronous networking, event demultiplexing, messaging | ||
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. | ||
Boost.Asio | asynchronous and synchronous networking, timers, serial I/O | ||
Boost.Beast | HTTP and WebSocket library built on top of Boost.Asio | ||
Breep | Event based, high-level, peer-to-peer library, allowing users to directly send and receive objects. | European Union Public License 1.1 | CMake |
C++ REST SDK | asynchronous HTTP client and listener, asynchronous Stream, URI, JSON | MIT License | CMake |
C++ RESTful framework | C++ micro-framework designed to be embedded into a wide range of applications. | CMake | |
cpp-netlib | cpp-netlib: The C++ Network Library | Boost Software License 1.0 | CMake |
cpr | a modern C++ HTTP requests library | MIT License | CMake |
curlpp | C++ wrapper for CURL library | ||
EasyHttp | A cross-platform HTTP client library with a focus on usability and speed, supporting http response caching and more. | MIT License | CMake |
eCAL | high performance inter-process communication | Apache License 2.0 | CMake |
fineftp-server | ftp server library for windows and unix | MIT License | CMake |
gRPC | gRPC is a modern open source high performance RPC framework that can run in any environment. | ||
gsoap | C/C++ development toolkit for XML data bindings, fast WSDL/SOAP/XML Web services, WS-Security, JSON/XML-RPC RESTful services | ||
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 |
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 |
KCP | A fast and reliable ARQ protocol that helps applications to reduce network latency. | MIT License | CMake |
libashttp | asynchronous HTTP client library | GNU Lesser General Public License v3.0 | |
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 |
libtins | Network packet crafting and sniffing library | ||
nanomsg | fast message queue, zeromq successor | ||
netif | Header-only C++14 library for getting network addresses on Windows, Linux, macOS, and FreeBSD. | BSD 3-Clause "New" or "Revised" License | CMake |
nghttp2 | HTTP/2 C Library and tools (server, client, proxy and benchmarking tools) | MIT License | CMake, configure |
ngrest | Fast and easy in use JSON RESTful Web Services Framework | Apache License 2.0 | CMake |
nng | fast message queue, nanomsg successor | ||
omniORB | the fastest, complete and portable CORBA ORB implementation in C++ | ||
OpenDDS | DDS implementation | ||
Paho MQTT | Modern C++ client for MQTT from Eclipse | CMake | |
PcapPlusPlus | Multiplatform C++ network sniffing and packet parsing and crafting framework | ||
POCO | networking: encryption, HTTP; Zip files | ||
rest_rpc | modern, simple, easy to use rpc framework | CMake | |
restc-cpp | Takes the pain out of accessing JSON API's from C++. HTTP Client, native C++ class to/from JSON serialization, asynchronous IO trough boost::asio coroutines. C++14. | MIT License | CMake |
restful_mapper | ORM for consuming RESTful JSON APIs in C++ | CMake, Makefile | |
seastar | High performance server-side application framework, based on C++14/C++17. | Apache License 2.0 | CMake, etc. |
Simple C++ REST library | Very simple and self documenting library for creating a REST API in your c++ application | ||
sockpp | A simple, modern C++ socket library | BSD 3-Clause "New" or "Revised" License | CMake |
stream-client | Lightweight, header-only, Boost-based client-side socket/connector/socket pool/resolver | Apache License 2.0 | CMake |
tacopie | C++11 TCP Library | MIT License | CMake |
TAO | CORBA | ||
taox11 | C++11 based CORBA implementation | MIT License | |
The Silicon C++14 Web Framework | Fast and Robust Web APIs | MIT | |
Unicomm | asynchronous networking, high-level TCP communication framework | ||
uvw | libuv wrapper in modern C++ | MIT License | CMake |
wvstreams | |||
zeromq | fast message queue |
Concurrency
Library | Description | License | Configuration |
---|---|---|---|
BlockingCollection | A C++11 thread safe collection class modeled after .NET BlockingCollection. | ||
Boost.Atomic | |||
Boost.Compute | (unofficial) STL-like algorithms and data-structures for OpenCL | ||
Boost.Context | |||
Boost.Interprocess | |||
Boost.Lockfree | |||
Boost.MPI | |||
Boost.Thread | |||
hipSYCL | provides a clang-based toolchain and a runtime SYCL implementation that can run on multiple target devices (NVIDIA/AMD GPU,s CPU) | ||
HPX | A general purpose C++ runtime system for parallel and distributed applications of any scale | ||
Intel TBB | |||
KOKKOS | A programming model in C++ for writing performance portable HPC applications | ||
libopenmpi | |||
libsimdpp | A portable header-only zero-overhead C++ low level SIMD library. | Boost License | CMake |
MutexGear | Mutex-only synchronization (wheel, rwlock, work queues) | The MutexGear Library License | configure, MSVC |
OpenMP | |||
RaftLib | C++ stream like concurrent actors | ||
SObjectizer | A small framework for simplification of development of concurrent and event-driven applications in C++ by using actor and publish-subscribe models. | ||
subprocess | a cross platform library for running subprocesses. | ||
Taskflow | Parallel Task Programming in Modern C++ | ||
Thrust | STL-like algorithms and data-structures for CUDA | ||
VexCL | C++ expression templates library for OpenCL and CUDA | ||
ViennaCL | Linear algebra and algorithms with OpenMP, CUDA, and OpenCL backends | ||
Xenium | A header-only library providing various concurrent data structures and reclamation schemes. |
Configuration
Library | Description | License | Configuration |
---|---|---|---|
Boost.Program_options | |||
gconfmm | |||
libconfig | |||
libconfini | INI parser |
- XML
Library | Description | License | Configuration |
---|---|---|---|
ai-xml | Serialize objects to and from XML by adding a single, minimal, function to a class. Uses libxml++ under the hood. | ||
GPDS | General purpose data serializer to serialize objects to and from XML. Uses TinyXML under the hood. | ||
gSOAP | XML data bindings | ||
libxml++ | |||
pugixml | |||
tinyxml | |||
tinyxml2 | Another and work in progress of TinyXML. | ||
Xerces |
- JSON
Library | Description | License | Configuration |
---|---|---|---|
ArduinoJson | ArduinoJson | ||
CAJUN | |||
jansson | Jansson is C library for encoding, decoding and manipulating JSON data. | ||
jeayeson | A very sane (header only) C++14 JSON library | ||
jios (JSON Input Output Streams) | |||
JOST | |||
JSON Voorhees | Killer JSON for C++ | ||
json | Niels Lohmann JSON | ||
JSON++ | |||
json-cpp | |||
json11 | json11 is a tiny JSON library for C++11, providing JSON parsing and serialization. | ||
JsonBox | |||
jsoncons | A header-only library for JSON and JSON-like data formats, with JSON Pointer, JSON Patch, JSONPath, CSV, MessagePack, CBOR, BSON, UBJSON. | ||
jsoncpp | |||
jsonme-- | |||
libjson | |||
minijson | C++ DOM-less and allocation-free JSON parsing and serialization | ||
nosjob | |||
qjson | |||
rapidjson | |||
simdjson | Parsing gigabytes of JSON per second | ||
struct_mapping | Mapping json to and from a c++ structure | ||
ThorsSerializer (JSON/YAML Input Output Streams) | |||
ujson | µjson is a small, C++11, UTF-8, JSON library | ||
zoolib |
- YAML
Library | Description | License | Configuration |
---|---|---|---|
yaml-cpp |
- TOML
Library | Description | License | Configuration |
---|---|---|---|
toml++ | TOML parser and serializer for C++17 and later | ||
toml11 | TOML parsing library based on C++11 |
- HOCON
Library | Description | License | Configuration |
---|---|---|---|
cpp-hocon | The C++ implementation of the HOCON format developed by Pupplet. |
- CSS
Library | Description | License | Configuration |
---|---|---|---|
mycss | CSS Parser |
Containers
Library | Description | License | Configuration |
---|---|---|---|
Boost.Any | |||
Boost.Array | |||
Boost.Bimap | |||
Boost.Container | |||
Boost.Fusion | |||
Boost.Heap | |||
Boost.Pointer Container | |||
Boost.Tuple | |||
Boost.Variant | |||
cpp-btree | btree_map, btree_set, btree_multimap, btree_multiset. | ||
DataFrame | C++ DataFrame for statistical, Financial, and ML analysis -- in modern C++ using native types, continuous memory storage, and no pointers are involved | BSD-3-Clause | CMake, Makefile, Conan |
eggs::variant | Eggs.Variant is a C++11/14 generic, type-safe, discriminated union. It is notable in particular for having very good `constexpr` support. | ||
Frozen | constexpr perfect-hashing-based frozen sets and maps | Apache 2.0 | |
plf::colony | Unordered "bag-like" container which outperforms std:: containers in high-modification scenarios while maintaining valid pointers to non-erased elements regardless of insertion and erasure. | ||
plf::list | std::list implementation which sacrifices range-splicing for cache-friendliness, yielding faster insertion, erasure and iteration. | ||
plf::stack | Drop-in replacement container for the std::stack container adaptor with better performance than std::vector and std::deque in a stack context. | ||
ring_span | A simplified implementation of Arthur O'Dwyer's ring_span - ie. a circular buffer view. | ||
strict_variant | A fast, never-empty variant targetting C++11. Prevents many undesirable implicit conversions. | ||
TdhLists | |||
Ygg | An intrusive C++11 implementation of high-performance containers and data structures such as a Red-Black-Tree, an Interval Tree and an Interval Map. |
Cryptography
Library | Description | License | Configuration |
---|---|---|---|
Botan | |||
crypto++ | |||
gnutls | |||
openssl | |||
TomCrypt |
Databases
Library | Description | License | Configuration |
---|---|---|---|
cpp-redis | C++11 Lightweight Redis client: async, thread-safe, no dependency, pipelining, multi-platform. | ||
DTL | |||
EasyQtSql | A lightweight header-only C++11 library for quick and easy SQL querying with QtSql | ||
LevelDB | A C++ library developed by Google that handles billion-scale Key-Value data persistence storage. | ||
libpqxx | |||
lmdb++ | C++11 wrapper for the LMDB embedded B+ tree database library. | ||
mongocxx | C++11 driver library for MongoDB | ||
mysql++ | |||
ODB - C++ Object-Relational Mapping (ORM) | |||
OTL | |||
Pgfe - PostGres FrontEnd | The modern C++ client API to PostgreSQL | ||
QTL | A friendly and lightweight C++ database library for MySQL, SQLite and ODBC. | ||
QUINCE: QUeries IN C++ Expressions (ORM+EDSL) | |||
QxOrm - C++ Qt Object-Relational Mapping (ORM) | |||
redis-cpp | C++17 Lightweight C++ client header-only library for executing Redis commands. | ||
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 | ||
SOCI | |||
SQLAPI++ | |||
SQLiteCPP | |||
sqlpp11 |
Embedded languages bindings
Library | Description | License | Configuration |
---|---|---|---|
AngelScript | a scripting language like C++. | ||
ChaiScript | |||
ExprTk | |||
Jinx | Scripting language designed for videogames. | ||
lua | |||
mozjs | |||
muparser | |||
PythonQt | |||
ScriptCaller | a header only library allowing us to call ruby scripts. | ||
sol2 | |||
v8pp | Bind C++ functions and classes into V8 JavaScript engine |
Embedded/realtime
Library | Description | License | Configuration |
---|---|---|---|
distortos | object-oriented C++ RTOS for microcontrollers | ||
ETL - Embedded Template Library | C++ 03, Portable template library tailored for low resource platforms | ||
QP/C++ | RTOS kernel, dual GPL | ||
µcuREST | C++11 REST/JSON server framework for microcontrollers |
File metadata
Library | Description | License | Configuration |
---|---|---|---|
exempi | |||
exiv2 | |||
libkexiv2 | |||
rarian |
Financial Calculations
Library | Description | License | Configuration |
---|---|---|---|
DataFrame | C++ DataFrame for statistical, Financial, and ML analysis -- in modern C++ using native types, continuous memory storage, and no pointers are involved | BSD-3-Clause | CMake, Makefile, Conan |
QuantLib - Quantitative finance library |
Game Engine Architecture
Library | Description | License | Configuration |
---|---|---|---|
Anax | |||
BOX2D | Physics engine | ||
EntityPlus | |||
EntityX | |||
EnTT |
General Multimedia
Library | Description | License | Configuration |
---|---|---|---|
Kigs-framework | Modular Multi-purpose Cross Platform Framework | MIT license | |
openFrameworks | |||
SDL (Simple DirectMedia Layer) | 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 | |
SFML (Simple and Fast Multimedia Library) | |||
SIGIL (Sound, Input, and Graphics Integration Library) | mind-bogglingly simple, cross-platform, minimalist library for text, shapes, input, audio, and 2D images |
Generic
Library | Description | License | Configuration |
---|---|---|---|
Abseil | An open-source collection of C++ library code from Google designed to augment the C++ standard library. | ||
Abstract Intrusive Containers | More flexible than boost::intrusive, but not STL-compatible. | ||
BDE | The Bloomberg Development Environment core libraries from Bloomberg L.P. | Apache License | |
Better Enums | Reflective enums (enum to string, iteration, etc.) with constexpr support. | BSD License | |
bitfield.h | Bit field structure facility, more portable/flexible than the base language facility. | ||
Boost | large collection of generic libraries | Boost License | |
CAF | 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 | |
Cinder | |||
CommonPP | Multi-purpose library with a strong emphasis on getting metrics out of a project. | BSD License | |
composite_op.h | Basic class data member introspection, cumbersome and often non-re-entrant, but sometimes useful. | ||
cpp-mmf | A C++98 library that encapsulates memory-mapped-files for POSIX or Windows | ||
cxxomfort | Backports of C++ features (C++11 to C++03 and C++1y proposals to C++11/C++03). | ||
Dlib | networking, threads, graphical interfaces, data structures, linear algebra, machine learning, XML and text parsing, numerical optimization, Bayesian nets, and numerous other tasks | Boost License | |
fcppt | 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. | ||
Folly | Facebook open-source library. Library of C++11 components designed with practicality and efficiency in mind. | ||
GSL | Guidelines Support library implementation, recommended by Bjarne Stroustrup, Herb Sutter and Co in C++ Core Guidelines | ||
gsl-lite | A single-file header-only version of ISO C++ Guideline Support Library (GSL) for C++98, C++11 and later | MIT License | |
JUCE | An extensive, mature, cross-platform C++ toolkit | GPL License | |
Kangaru | A dependency injection container for C++11 and C++14 | MIT License | |
libsourcey | Cross-platform C++11 library for high speed networking and media encoding. HTTP, WebSockets, TURN, STUN, Symple and more... | ||
Loki | design patterns | ||
nonstd-lite | Parent of *-lite repositories, a migration path to post-C++11 features for pre-C++11 environments | Boost License | |
nytl | Generic C++17 header-only utility template library. | Boost License | |
OnPosix | C++ library providing several abstractions (e.g., threading, networking, logging, IPC, etc.) on POSIX platforms. | ||
Reason | xml, xpath, regex, threads, sockets, http, sql, date-time, streams, encoding and decoding, filesystem, compression | GPL License | |
SaferCPlusPlus | SaferCPlusPlus - Safe compatible substitutes for unsafe C++ primitives, including pointers, int and std::vector. | Boost License | |
Smart Enum | "to_string", "from_string" and more for your enums. | Boost License | |
Ultimate++ | Cross-platform rapid application development framework | ||
units | A compile-time, header-only, dimensional analysis and unit conversion library built on c++14 with no dependencies | MIT License | |
yaal | algorithms, collections, arbitrary precision calculation, generic-DSL grammar driven parsers and more (CC BY-ND-NC 4.0) | ||
Yato | Modern C++(14/17) cross-platform STL-styled and STL-compatible library with implementing containers, ranges, iterators, type traits and other tools; actors system; type-safe config interface. | Apache-2.0 | |
yomm2 | Open multi-methods for C++17 | Boost License |
GPS
Library | Description | License | Configuration |
---|---|---|---|
gpsd |
Graphic user interface
Library | Description | License | Configuration |
---|---|---|---|
Dear ImGui | A bloat-free graphical user interface library that is highly optimized. | ||
FLTK | |||
nana | GUI programming in modern C++ style | Boost License | |
nanogui | Minimalistic cross-platform widget library for OpenGL 3.x or higher | ||
OWLNext | Modern update to OWL for writing GUI applications in standard C++ on Windows | ||
tiny file dialogs | a single C C++ cross-platform file (no init, no main loop, 6 modal function calls) | ||
WxWidgets |
- CopperSpice
Library | Description | License | Configuration |
---|---|---|---|
CopperSpice | CopperSpice is a set of C++ libraries used to develop cross-platform software applications. It is released under the LGPL V2.1 license. It uses modern idiomatic C++ and integrates seamlessly with the STL. CopperSpice was derived from the Qt framework. | ||
CsSignal | Standalone C++ thread aware signal/slot library | ||
CsString | Standalone C++ unicode aware string library | ||
libGuarded | Standalone C++ multithreading library for managing access to shared data |
- GTK+
Library | Description | License | Configuration |
---|---|---|---|
evince | |||
flowcanvas | |||
glibmm | |||
goocanvasmm | |||
gtkmm | |||
libglademm | |||
libgnomecanvasmm | |||
webkitgtk |
- Qt
Library | Description | License | Configuration |
---|---|---|---|
libdbusmenu-qt | |||
Qt | |||
QuickProperties | C++/QML library for QObject/QtObject properties edition; project homepage: http://www.qanava.org | ||
QuickQanava | C++14 library for drawing directed graphs in a Qt/QML application; project homepage: http://www.qanava.org | ||
qwt5 | Qt Widgets for Technical Applications | ||
qwtplot3d |
Graphics
Library | Description | License | Configuration |
---|---|---|---|
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. | ||
cairomm | |||
dfpsr | 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 | |
gegl | |||
nanovg | 2D drawing library based on openGL/DX/metal. | ||
nux | |||
pangomm |
Images
Library | Description | License | Configuration |
---|---|---|---|
Adobe/boost GIL | high-level generic library, focused on algorithms that operate on 2D images. Very limited I/O options. | ||
Anti-Grain Evolution | cross-platform 2D rasterization and rendering engine | ||
GraphicsMagick | Reading, writing, and manipulating images in over 88 major formats. Forked from ImageMagick in 2002 | ||
Skia Graphics Engine | Google's core graphics library as of 2005, used in Chrome, Chrome OS, Android, and also in Firefox and Sublime Text enwiki:Skia_Graphics_Engine | ||
stb |
- Plotting
Library | Description | License | Configuration |
---|---|---|---|
plotutils |
- Formats
Library | Description | License | Configuration |
---|---|---|---|
djvulibre | |||
imagemagick | |||
Kaitai Struct C++ runtime | |||
libraw | |||
openexr | |||
poppler | |||
qimageblitz | |||
SVG++ |
Graphics (3D)
Library | Description | License | Configuration |
---|---|---|---|
assimp | 3D model loading | ||
bgfx | Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library. | ||
Diligent Engine | A modern cross-platform low-level 3D graphics library. | ||
Epoxy | Modern successor to GLEW. Abstracts difference between some kinds of GL contexts, which makes it sometimes simpler to use than GLEW. Used by GTK+ project since 2015. | ||
GLAD | Customizable, lightweight library for loading OpenGL functions | ||
GLEW | OpenGL function loading | ||
GLFW | OpenGL window manager | ||
GLM | Header only C++ mathematics library for rendering | ||
hlsl++ | Header only C++ math library for rendering using hlsl syntax. Supports SSE and NEON | ||
Horde3D | |||
Irrlicht | |||
klein | C++11/14/17 SSE-optimized Projective Geometric Algebra library for graphics and animation | ||
Magnum | Lightweight and modular C++11/C++14 graphics middleware for games and data visualization | ||
Ogre3D | |||
Open CASCADE | SDK for 3D CAD/CAM/CAE applications | ||
OpenGL | |||
OpenSceneGraph | |||
Visionaray | A C++ ray tracing template library | ||
VTK | |||
Vulkan |
Image Processing
Library | Description | License | Configuration |
---|---|---|---|
dlib | |||
ITK | |||
opencv | |||
OTB |
Internationalization
Library | Description | License | Configuration |
---|---|---|---|
gettext | |||
IBM ICU | |||
spirit-po | A small, header-only library which parses po-files and provides an interface similar to GNU libintl. Based on boost::spirit. |
Logging
Library | Description | License | Configuration |
---|---|---|---|
Backward | Printing nice Python-styled stack traces with colors and source snippets, especially on crashes (MIT License). | ||
Boost.Log | |||
glog | Google Logging Library | ||
Log4cplus | Logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. | ||
Log4cpp | A library of C++ classes for flexible logging to files, syslog, IDSA and other destinations (LGPL) | ||
log4cxx | Apache log4cxx is a logging framework for C++ patterned after Apache log4j | ||
Pantheios | Diagnostic Logging API library, offering a combination of type-safety, efficiency, genericity and extensibility | ||
plog | Portable and simple log for C++ in less than 1000 lines of code (MPL2) | ||
Quill | C++14 Asynchronous Low Latency Logging Library | ||
spdlog | Super fast, header only, C++ logging library |
Math
Library | Description | License | Configuration |
---|---|---|---|
alglib | |||
ArrayFire High Performance Computation Library | |||
BigNumber | C++ class for creating and computing arbitrary-length integers | ||
Boost.Math.Special Functions and Statistical Distributions | |||
Boost.Multiprecision | |||
Boost.Random | |||
C++ Matrix | High performance and accurate (e.g. edge cases) matrix math library with expression template arithmetic operators | BSD-3-Clause | CMake, Makefile |
CasADi | Symbolic framework for nonlinear optimization and algorithmic differentiation. Supports C++ code generation for symbolic expressions and dynamic connection of compiled generated code. | ||
cpp-measures | A header-only C++11 library to handle physical measures | ||
G+Smo | cross-platform library for isogeometric analysis | ||
GNU MP bignum C++ interface | |||
NTL - A Library for doing Number Theory | |||
SEMT | Compile time symbolic differentiation | ||
stats++ | Advanced, comprehensive statistical software: data collection and preprocessing, statistics, machine learning, and optimization, with open C++ source code. | ||
StatsLib | A templated, header-only library of statistical distribution functions. |
- Numeral Calculations
Library | Description | License | Configuration |
---|---|---|---|
LibBF | An arbitrary precision numerical calculation library developed by Bellard with a sample program that calculates pi to billions of bits |
- Linear algebra
Library | Description | License | Configuration |
---|---|---|---|
Armadillo | |||
Blaze | |||
Blitz++ | |||
Boost.uBLAS | |||
DecompLib | A header-only C++11 library to decompose a vector into a set of positive definite weighted basis vectors. | ||
Dlib - linear algebra tools | |||
Eigen | |||
ETL | |||
IT++ | |||
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. | ||
xtensor | xtensor is a C++ library meant for numerical analysis with multi-dimensional array expressions. (BSD) |
- Optimization
Library | Description | License | Configuration |
---|---|---|---|
ceres-solver | 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. (BSD) | ||
OptimLib | A C++11 library of numerical optimization methods for nonlinear functions. |
- Graph theory
Library | Description | License | Configuration |
---|---|---|---|
Boost.Graph | |||
GTpo | C++14 generic graph topology library with Protocol Buffer serialization; project homepage: http://www.qanava.org | ||
LEMON | |||
NGraph - a simple (Network) Graph library in C++ | |||
OGDF - Open Graph Drawing Framework |
- Class Library for Numbers
Library | Description | License | Configuration |
---|---|---|---|
cln | |||
Universal | A C++ template library for universal number arithmetic, replacing IEEE floating point (MIT License) |
- Machine Learning
Library | Description | License | Configuration |
---|---|---|---|
Dlib | machine learning tools | ||
FANN | Fast Artificial Neural Network Library | ||
liblinear | |||
MLPACK | machine learning package | ||
Shogun | large scale machine learning toolbox | ||
stats++ |
- Computational geometry
Library | Description | License | Configuration |
---|---|---|---|
CGAL | Computational geometry algorithms library | ||
PCL | Point Cloud library | ||
pmp-library | Polygon Mesh Processing Library | ||
Wykobi | Computational geometry library |
- Automata theory
Library | Description | License | Configuration |
---|---|---|---|
yasmine - C++11 UML state machine framework |
Metaprogramming
Library | Description | License | Configuration |
---|---|---|---|
Boost.CallableTraits | |||
Boost.Hana | New metaprogramming library for both types and values | ||
Boost.Metaparse | Compile-time parser library, producing types, values, and metafunctions from compile-time strings | ||
Boost.Mp11 | |||
Boost.MPL | Original metaprogramming library, targeted at C++03, slow | ||
Boost.Proto | A library for building expression template-backed EDSLs | ||
Brigand | Uses eager metafunctions, optimized for best performance | ||
CoMeta | Lightweight, header-only C++14 metaprogramming library | ||
Meta | Uses eager metafunctions, middle ground between metal and brigand wrt performance | ||
Metal | Uses eager metafunctions, 100% SFINAE-friendly | ||
refl-cpp | A modern compile-time reflection library for C++ with support for overloads, templates, attributes and proxies | ||
visit_struct | A miniature reflection library, providing structure visitors for C++11/14. Self-contained, 200-400 lines of code depending how you count. |
Library | Description | License | Configuration |
---|---|---|---|
HARU | |||
JagPDF | |||
PoDoFo |
Physics and Simulations
Library | Description | License | Configuration |
---|---|---|---|
Bullet | Physics simulation for games, visual effects, robotics and reinforcement learning | ||
ProjectCHRONO | An Open Source Multi-physics Simulation Engine | ||
ReactPhysics3D | C++ physics engine library for 3D simulations and game |
Serialization
Library | Description | License | Configuration |
---|---|---|---|
Boost.Serialization | |||
C++ XML objects | |||
cereal (C++11 serialization) | |||
cppcodec | Header-only C++11 library to encode/decode base64, base32 and hex with consistent, flexible API (MIT License) | ||
GPDS | General purpose data serializer to serialize objects to and from XML. Uses TinyXML under the hood. | ||
gSOAP | accurate XML serialization | ||
iguana (universal serialization engine) | |||
jios (JSON serialization) | |||
libs11n | |||
protobuf | |||
rpnx-serial | A library that can (de)serialize types like std::map, std::vector, etc. | ||
sweet_persist | |||
ThorsSerializer (JSON/YAML Input Output Streams) | |||
yaml-cpp | |||
YAS (Yet Another Serialization) |
- Binary serialization
Library | Description | License | Configuration |
---|---|---|---|
binn | A binary serialization library designed to be compact, fast, and easy to use, itself an implementation of the same name format. | ||
bson-cxx | C++ implementation in BSON format. | ||
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. | ||
UBjsonCpp | High-performance UBJson read-write library based on C++14 |
Sorting
Library | Description | License | Configuration |
---|---|---|---|
Indiesort | Templated sort-wrapper function which allows use of std::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) | ||
Timsort | Templated stable sorting function which outperforms quicksort-based algorithms including std::sort, for reversed or semi-sorted data. (MIT) |
System
Library | Description | License | Configuration |
---|---|---|---|
Infoware | C++ Library for pulling system and hardware information, without hitting the command line. (Creative Commons Zero v1.0 Universal) |
Terminal
Library | Description | License | Configuration |
---|---|---|---|
cwidget | |||
replxx | A readline and libedit replacement that supports UTF-8, syntax highlighting & hints. |
Testing
Library | Description | License | Configuration |
---|---|---|---|
bandit | Human-friendly unit testing for C++11 | ||
Boost.Test | |||
Catch2 | |||
cppunit | |||
doctest | The lightest feature-rich C++ single-header testing framework for unit tests and TDD | ||
ELFspy | Testing in isolation with fakes and spies - Linux only | ||
Google Test | |||
lest | A modern, C++11-native, single-file header-only, tiny framework for unit-tests, TDD and BDD (includes C++98 variant). | ||
liblittletest | Portable, one file header-only testing framework | ||
xtd.tunit | Modern c++17 unit testing library on Windows, macOS, Linux, iOS and android. Office site |
Text
- coding
Library | Description | License | Configuration |
---|---|---|---|
uchardet | The ability to guess string encoding is basically the same as the uchardet function in Python. | ||
win-iconv | The character set encoding conversion library for Linux and Mac The Windows implementation of iconv is based on the Win32 Character Set Conversion API. |
- format
Library | Description | License | Configuration |
---|---|---|---|
fmt | printf is not easy to use, ostream is not easy to use, format is easy to use |
- Parse
Library | Description | License | Configuration |
---|---|---|---|
BNFlite | A single file header only lightweight grammar parser library | ||
PEGTL | Parsing Expression Grammar Template Library |
- Search
Library | Description | License | Configuration |
---|---|---|---|
clucene | |||
Step | Ukkonen's online algorithm for constructing suffix tree, Manber's algorithm for constructing suffix array. | ||
xapian |
- Template Engine
Library | Description | License | Configuration |
---|---|---|---|
inja | A Template Engine for Modern C++ | ||
Jinja2C++ | Modern C++ implementation of Jinja2 templates |
Version Control
Library | Description | License | Configuration |
---|---|---|---|
coo-semver | The C++ operation library for semantic version numbers. | ||
LibGit2 | Version Control System Git's core library. |
Video
Library | Description | License | Configuration |
---|---|---|---|
crystalhd | |||
gstreamermm | |||
libmatroska | |||
libVLC | |||
mjpegtools |
Web
Library | Description | License | Configuration |
---|---|---|---|
Chromium Embedded | |||
cpp-jwt | |||
Drogon | A C++14/17 based HTTP web application framework running on Linux/macOS/Unix/Windows. | ||
libhttpserver | |||
libkcddb | |||
liblastfm | |||
libmusicbrainz5 | |||
libnavajo | |||
oatpp | Light and powerful web-framework for IoT and high-performance web-services. Zero-dependency and easy-portable. | ||
QtWebApp | HTTP(s) Server in C++ inspired by Java Servlets | ||
Tufão | |||
Wt |