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.
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
|
BSL-1.0
|
|
Boost.Beast
|
HTTP and WebSocket library built on top of Boost.Asio
|
BSL-1.0
|
|
Breep
|
Event based, high-level, peer-to-peer library, allowing users to directly send and receive objects.
|
European Union Public License 1.1
|
CMake
|
brpc
|
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
|
asynchronous HTTP client and listener, asynchronous Stream, URI, JSON
|
MIT
|
CMake
|
cpp-netlib
|
cpp-netlib: The 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 header-only C++ micro web framework (inspired by Python Flask)
|
BSD-3-Clause
|
CMake
|
curlpp
|
C++ wrapper for CURL library
|
|
|
DumaisLib
|
Various utilities such as WebServer, JSON, WebSocket server, REST framework (a library for creating a REST API in your c++ app)
|
MIT
|
Makefile
|
EasyHttp
|
A cross-platform HTTP client library with a focus on usability and speed, supporting http response caching and more.
|
MIT
|
CMake
|
eCAL
|
high performance inter-process communication
|
Apache 2.0
|
CMake
|
fineftp-server
|
ftp server library for windows and unix
|
MIT
|
CMake
|
gRPC
|
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
|
|
|
hmbdc
|
Headers-only, lightweight and high performance C++17 message pub/sub middleware framework/lib
|
|
Headers-only
|
HTTPP
|
Simple, production ready HTTP server built on top of Boost and a client built on top of libcurl.
|
BSD 2-Clause "Simplified"
|
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"
|
CMake, Makefile
|
KCP
|
A fast and reliable ARQ protocol that helps applications to reduce network latency.
|
MIT
|
CMake
|
libashttp
|
asynchronous HTTP client library
|
GNU Lesser General Public v3.0
|
|
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
|
CMake, Conan
|
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"
|
CMake
|
nghttp2
|
HTTP/2 C Library and tools (server, client, proxy and benchmarking tools)
|
MIT
|
CMake, configure
|
ngrest
|
Fast and easy in use JSON RESTful Web Services Framework
|
Apache 2.0
|
CMake
|
nng
|
fast message queue, nanomsg successor
|
|
|
Oat++
|
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
|
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 (Doc)
|
|
|
rest_rpc
|
modern, simple, easy to use rpc framework
|
|
CMake
|
restbed
|
Restbed framework brings asynchronous RESTful functionality to C++11 applications.
|
License
|
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
|
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 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
|
Lightweight, header-only, Boost-based client-side socket/connector/socket pool/resolver
|
Apache 2.0
|
CMake
|
tacopie
|
C++11 TCP Library
|
MIT
|
CMake
|
TAO
|
CORBA
|
|
|
taox11
|
C++11 based CORBA implementation
|
MIT
|
|
Unicomm
|
asynchronous networking, high-level TCP communication framework
|
|
|
uvw
|
libuv wrapper in modern C++
|
MIT
|
CMake
|
WNetWrap
|
WinInet wrapper in C++
|
MIT
|
|
wvstreams
|
C++ networking library including UniConf and a convenient D-Bus API
|
GPL
|
|
zeromq
|
fast message queue
|
|
|
Library
|
Description
|
License
|
Configuration
|
Asyncpp
|
An asynchronous c++ library that provides various concurrent operations
|
MIT
|
CMake
|
BlockingCollection
|
A C++11 thread safe collection class modeled after .NET BlockingCollection.
|
|
|
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
|
(unofficial) 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
|
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
|
CMake
|
HPX
|
A general purpose C++ runtime system for parallel and distributed applications of any scale
|
|
|
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, Makefile
|
KOKKOS
|
A programming model in C++ for writing performance portable HPC applications
|
|
|
libopenmpi
|
The Open MPI Project is an open source Message Passing Interface implementation
|
3-clause BSD
|
|
libsimdpp
|
A portable header-only zero-overhead C++ low level SIMD library.
|
Boost
|
CMake
|
MPL
|
A C++-17-friendly header-only interface to the standard Message Passing Interface
|
BSD 3-Clause "New" or "Revised"
|
CMake
|
MutexGear
|
Mutex-only synchronization (wheel, rwlock, work queues)
|
The MutexGear Library
|
configure, MSVC
|
OpenMP
|
The OpenMP API specification for parallel programming
|
|
|
RaftLib
|
C++17 stream-like concurrent actors that enable parallel data-flow computations
|
Apache-2.0
|
CMake
|
SObjectizer
|
A small framework for simplification of development of concurrent and event-driven applications in C++ by using actor and publish-subscribe models.
|
|
|
subprocess
|
C++17/20 cross platform library for running subprocesses
|
MIT
|
CMake, Teaport
|
Taskflow
|
Parallel Task Programming in Modern C++
|
TASKFLOW MIT
|
CMake
|
Thrust
|
STL-like parallel algorithms and data-structures on top of CUDA, TBB, or OpenMP
|
Apache v2.0, Boost v1.0.
|
CMake
|
VexCL
|
C++ vector expression template library for OpenCL, CUDA, OpenMP
|
MIT
|
CMake
|
ViennaCL
|
Linear algebra and algorithms with OpenMP, CUDA, and OpenCL backends
|
|
|
Xenium
|
A header-only C++17 library that provides various concurrent data structures and reclamation schemes.
|
MIT
|
CMake
|
Library
|
Description
|
License
|
Configuration
|
Boost.Program_options
|
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.
|
BSL-1.0
|
|
CLI11
|
A header-only command line parser for C++11 and beyond that provides a rich feature set with a simple and intuitive interface.
|
BSD-3-Clause
|
CMake
|
cmdlime
|
A C++17 library for command-line parsing that provides a concise, declarative interface with support for subcommands, validators, and the ability to choose either the GNU, POSIX, or X11 command-line options format.
|
MS-PL
|
CMake
|
cxxopts
|
A lightweight header-only C++11 (or C++17) command-line arguments parser, supporting the standard GNU style syntax for options.
|
MIT
|
CMake
|
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
|
hbristow/argparse
|
A slimline C++ class for parsing command-line arguments, with an interface similar to python's class of the same name.
|
BSD
|
|
morrisfranken/argparse
|
A lightweight header-only library for parsing command line arguments in an elegant manner.
|
Apache 2
|
CMake
|
p-ranav/argparse
|
Single header argument Parser for C++17
|
MIT
|
CMake
|
tclap
|
A simple templatized C++ library for parsing command line arguments. The library provides a simple, flexible object-oriented interface.
|
MIT
|
CMake
|
Library
|
Description
|
License
|
Configuration
|
ArduinoJson
|
ArduinoJson
|
|
|
Boost.JSON
|
JSON parsing, serialization, and DOM in C++11/17
|
BSL-1.0
|
|
CAJUN
|
|
|
|
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
|
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
|
MIT
|
CMake
|
JOST
|
|
|
|
json
|
Niels Lohmann JSON
|
|
|
JSON Voorhees
|
Killer JSON for C++
|
|
|
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
|
|
MIT
|
CMake, Conan, vcpkg
|
jsonme--
|
|
|
|
libjson
|
|
|
|
minijson
|
C++ DOM-less and allocation-free JSON parsing and serialization
|
|
|
Neyson
|
Lightweight C++11 JSON Library
|
BSD-3-Clause
|
CMake
|
nosjob
|
C++98 library for generating and consuming JSON data
|
MIT
|
make
|
qjson
|
|
|
|
rapidjson
|
|
|
|
simdjson
|
Parsing gigabytes of JSON per second taking advantage of modern micro-architectures and parallelizing with SIMD (Doc) (Kino)
|
Apache-2.0
|
CMake, vcpkg
|
struct_mapping
|
Mapping json to and from a c++ structure
|
|
|
ThorsSerializer
|
JSON/BSON/YAML Input Output Streams
|
MIT
|
Makefile
|
ujson
|
µjson is a small, C++11, UTF-8, JSON library
|
|
|
zoolib
|
ZooLib is a C++ toolkit.
|
MIT
|
|
Library
|
Description
|
License
|
Configuration
|
Boost.Bimap
|
a bidirectional maps library that offers associative containers such as bimap<X,Y> in which both X and Y can be used as a key.
|
BSL-1.0
|
|
Boost.Container
|
a header-only library that implements several well-known containers, including STL-like containers, as well as recursive containers, and new useful containers: flat_map , flat_set , flat_multimap , flat_multiset , stable_vector , static_vector , small_vector , devector .
|
BSL-1.0
|
|
Boost.Fusion
|
a library for working with heterogeneous collections of tuples. Provides a set of containers (vector , list , set and map ), along with transformed presentation of their underlying data, a.k.a views."
|
BSL-1.0
|
|
Boost.Heap
|
an implementation of priority queues with more functionality and different performance characteristics, than STL has.
|
BSL-1.0
|
|
Boost.Pointer Container
|
provides containers for holding heap-allocated objects in an exception-safe manner and with minimal overhead.
|
BSL-1.0
|
|
Boost.Tuple
|
implements pre-C++11 n-tuple (a fixed size collection of elements)
|
BSL-1.0
|
|
Boost.Variant
|
implements pre-C++17 variant (a safe, generic, stack-based discriminated union container)
|
BSL-1.0
|
|
cpp-btree
|
header-only; B-tree containers make better use of the CPU cache: btree_map , btree_set , btree_multimap , btree_multiset . (Src)
|
Apache-2.0
|
CMake
|
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
|
eggs::variant
|
Eggs.Variant is a C++11/14/17 generic, type-safe, discriminated union. It is notable in particular for having very good constexpr support.
|
BSL-1.0
|
CMake
|
Frozen
|
constexpr perfect-hashing-based frozen sets and maps
|
Apache-2.0
|
|
Immer
|
A library of persistent and immutable data structures
|
Boost
|
CMake
|
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. C++98/11/14/etc-compatible. See also P0447, std::hive. (Src)
|
zlib
|
conan build2
|
plf::list
|
std::list implementation which sacrifices range-splicing for cache-friendliness, yielding faster insertion, erasure and iteration. C++98/11/14/etc-compatible. (Src)
|
zlib
|
|
plf::queue
|
Drop-in replacement container for the std::queue container adaptor with better performance than std::deque and std::list in a queue context. C++98/11/14/etc-compatible. (Src)
|
zlib
|
|
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. C++98/11/14/etc-compatible. (Src)
|
zlib
|
|
ring_span
|
A header-only lite implementation of Arthur O'Dwyer's ring_span , a.k.a. circular buffer view. C++98- compatible.
|
BSL-1.0
|
CMake
|
strict_variant
|
A realtime/embedded-friendly (i.e. -fno-exceptions /-fno-rtti compatible), never-empty variant targetting C++11. Fast, prevents many undesirable implicit conversions.
|
BSL-1.0
|
CMake
|
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.
|
MIT
|
CMake
|
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
|
|
|
Galera
|
The Galera Cluster is the synchronous multi-master replication library (Galera) and a Write Set Replication (WSREP) API for MySQL/MariaDB (Src)
|
GPLv2
|
CMake, Scons
|
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++
|
|
|
|
nanodbc
|
A small, cross-platform, C++14 wrapper for the native C ODBC API
|
MIT
|
CMake
|
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
|
|
OTL
|
|
|
|
Pgfe
|
The PostgreSQL client (FrontEnd) API in modern C++
|
Zlib
|
CMake
|
QTL
|
A friendly and lightweight C++ database library for MySQL, SQLite and ODBC.
|
|
|
QUINCE
|
QUeries IN C++ Expressions (ORM+EDSL)
|
Boost
|
|
QxOrm
|
Object Relational Mapping (ORM) database library for C++/Qt, supports most common databases, serialization (JSON, binary, XML); standalone multi-threaded HTTP web server
|
GPLv3 or Proprietary
|
|
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
|
|
|
|
taoPQ
|
Lightweight C++17 PostgreSQL client library
|
Boost
|
CMake
|
Library
|
Description
|
License
|
Configuration
|
Abseil
|
An open-source collection of C++ library code from Google designed to augment the C++ standard library. (Doc) (Src)
|
Apache-2.0
|
CMake
|
Abstract Intrusive Containers
|
More flexible than Boost.Intrusive, but not STL-compatible.
|
|
|
BDE
|
The Bloomberg Development Environment core libraries from Bloomberg L.P.
|
Apache
|
|
Better Enums
|
Reflective enums (enum to string, iteration, etc.) with constexpr support.
|
BSD
|
|
bitfield.h
|
Bit field structure facility, more portable/flexible than the base language facility.
|
|
|
Boost
|
large collection of generic libraries
|
BSL-1.0
|
|
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
|
|
Cinder
|
A community-developed, free and open source library for professional-quality creative coding in C++. (Doc) (Src)
|
Modified BSD
|
CMake
|
CommonPP
|
Multi-purpose library with a strong emphasis on getting metrics out of a project.
|
BSD
|
|
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
|
|
eventpp
|
eventpp is a C++ event library for callbacks, event dispatcher, and event queue. With eventpp you can easily implement signal and slot mechanism, publisher and subscriber pattern, or observer pattern.
|
Apache 2.0
|
|
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. A crossplatform library of C++14 components designed with practicality and efficiency in mind. (Doc)
|
Apache-2.0
|
CMake, vcpkg
|
GSL
|
C++ Core Guidelines Support Library implementation, recommended by Bjarne Stroustrup, Herb Sutter and Co in C++ Core Guidelines
|
MIT
|
CMake, vcpkg
|
gsl-lite
|
A single-file header-only version of ISO C++ Guideline Support Library (GSL) for C++98, C++11 and later
|
MIT
|
|
GUL14
|
General Utility Library for C++14 from DESY: Often-used utility functions and types, including String utilities, Statistics and Numeric functions, Containers, Debugging means, etc. (Src)
|
LGPL-2.1
|
Meson, vcpkg
|
History
|
Modern C++17 Undo/Redo Framework
|
Unlicense
|
|
hspp
|
An experimental library to bring Haskell Style Programming to C++.
|
Apache-2.0
|
header-only
|
IP-DOS (tm)
|
IdeaFarm (tm) Piggyback Distributed Operating System: A general purpose programming environment for the C++ language.
|
Proprietary Open Source
|
Open Watcom 2.0
|
JUCE
|
An extensive, mature, cross-platform C++ toolkit
|
GPL
|
|
Kangaru
|
A dependency injection container for C++11 and C++14
|
MIT
|
|
Kerbal
|
Backports of modern STL facilities to previous standard. More features! More constexpr!
|
LGPL-3.0
|
header-only
|
libsourcey
|
Cross-platform C++14 library for high speed networking and media encoding. HTTP, WebSockets, TURN, STUN, Symple and more.
|
LGPL-2.1
|
CMake
|
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"
|
CMake
|
Loki
|
design patterns
|
|
|
match(it)
|
A lightweight pattern-matching library for C++17 with macro-free APIs.
|
Apache-2.0
|
header-only
|
nonstd-lite
|
Parent of *-lite repositories, a migration path to post-C++11 features for pre-C++11 environments
|
Boost
|
|
nytl
|
Generic C++17 header-only utility template library.
|
Boost
|
|
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
|
|
SaferCPlusPlus
|
Safe compatible substitutes for unsafe C++ primitives, including pointers, int and std::vector.
|
Boost
|
|
Smart Enum
|
"to_string", "from_string" and more for your enums.
|
Boost
|
|
units
|
A compile-time, header-only, dimensional analysis and unit conversion library built on c++14 with no dependencies
|
MIT
|
|
yaal
|
Yet Another Abstraction Layer - algorithms, collections, arbitrary precision calculation, generic-DSL grammar driven parsers and more
|
CC BY-ND-NC 4.0
|
CMake
|
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
|
CMake
|
yomm2
|
Open multi-methods for C++17
|
Boost
|
|
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
|
A C++ wrapper for the cairo graphics library that is 2D library with support for multiple output devices: X Window, Quartz, Win32, image buffers, PostScript, PDF, SVG, OpenGL (experimental).
|
LGPL
|
|
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
|
|
gegl
|
GEGL (Generic Graphics Library) is a data flow based image processing framework, providing floating point processing and non-destructive image processing capabilities. (Src)
|
LGPL
|
|
io2d
|
Reference Implementations of P0267, the proposed 2D graphics API for ISO C++
|
Boost
|
CMake
|
nanovg
|
2D drawing library based on openGL/DX/metal.
|
|
|
nux
|
An OpenGL toolkit
|
LGPL v3
|
|
pangomm
|
is the official C++ interface for the Pango font layout library. (Src)
|
LGPL v2.1
|
Makefile
|
Skia
|
is an open-source 2D-graphics library written in C++. 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
|
|
TXLib
|
TX Library is a tiny 2D graphics library for Win32 written in C++.
|
|
|
ULIS
|
Cross-Platform C++14 Library, Generic digital image processing, 2D Software rasterizer, Unlimited image formats (u8, u16, u32, float, double), Custom bit-ordered memory layout, All Photoshop pixel blending modes + 11 additional modes, Color models (RGB, HSL, HSV, CMYK, ...), Color-managed pipelines, Color Space support (icm profiles and device-independant), Optimized algorithms with multithreading, Optimized algorithms with SIMD Extensions (SSE2), Image pools and caches for optimisations, Memory storage of animated image sequences
|
Custom (free-of-charge for non-commercial purposes only)
|
CMake
|
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.
|
|
|
G3D
|
The G3D Innovation Engine is a fully featured, open source, cross platform (Windows, Linus, Mac OS) 3D game engine written in C/C++. G3D is used in commercial games, research papers, simulators, and university courses. It supports real-time and offline hardware rendering, ray tracing, model loading, linear algebra, and GP-computation on GPUs. Supports 3DS, OBJ, MP4, PNG, JPG, MD3 and many other formats, includes a native OpenGL skinnable GUI. (Src) (Doc)
|
BSD-2
|
|
GLAD
|
Customizable, lightweight library for loading OpenGL functions
|
|
|
GLEW
|
OpenGL function loading
|
|
|
GLFW
|
OpenGL window manager
|
|
|
GLM
|
Header only C++ mathematics library for rendering
|
|
|
Godot
|
Full featured multi-platform 2D and 3D game engine in C++17 with a GUI editor written on itself and a python-inspired script language.
|
MIT
|
SCons
|
hlsl++
|
Header only C++ math library for rendering using hlsl syntax. Supports SSE and NEON
|
|
|
Horde3D
|
Horde3D is a small open source 3D rendering engine. It is written in an effort to create a graphics engine that offers the stunning visual effects expected in next-generation games being lightweight and as clean as possible.
|
|
|
Irrlicht
|
The Irrlicht Engine is an open source realtime 3D engine written in C++. It is cross-platform, using D3D, OpenGL and its own software renderers.
|
|
|
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
|
|
|
O3DE
|
Open-source 3D Engine (former Amazon's Lumberyard) is a C++ multi-platform 3D engine to build AAA games, cinema-quality 3D worlds, and high-fidelity simulations. Includes physics simulation, script engine, networking, and more. (Doc)
|
Apache 2.0
|
CMake
|
Ogre3D
|
OGRE - Object-Oriented Graphics Rendering Engine - is a multipurpose visualization library, suitable for scientific visualization, games, simulation, virtual reality and other graphic projetcs. It is multiplatform and very robust, with a good documentation.
|
MIT
|
CMake
|
Open CASCADE
|
SDK for 3D CAD/CAM/CAE applications
|
|
|
OpenGL
|
3D language, graphics and SDK for developing 3D applications.
|
|
|
OpenSceneGraph
|
OpenSceneGraph is an open source high performance 3D graphics toolkit, used by application developers in fields such as visual simulation, games, virtual reality, scientific visualization and modelling.
|
|
|
Visionaray
|
A C++ ray tracing template library.
|
|
|
VTK
|
Visualization Toolkit (VTK) is an open source software for manipulating and displaying scientific data. It comes with state-of-the-art tools for 3D rendering, a suite of widgets for 3D interaction, and extensive 2D plotting capability.
|
|
|
Vulkan
|
Vulkan is by design a low-level API that removes many of the abstractions found in previous generation graphics APIs. This is great for delivering maximum performance, but has the side effect of exposing more complexity to the developer. Fortunately, several excellent tutorials exist to help clear this hurdle and get productive quickly.
|
|
|
Library
|
Description
|
License
|
Configuration
|
Backward
|
Printing nice Python-styled stack traces with colors and source snippets, especially on crashes. Header-only.
|
MIT
|
CMake, Conan
|
Boost.Log
|
A cross-platform logging library that is simple to use, extensible, and performant.
|
BSL-1.0
|
|
clutchlog
|
Single-header logging system which targets versatile DEBUGGING instead of service event storage.
|
BSD
|
CMake
|
glog
|
Google Logging Library for C++98 based on C++-style streams
|
License
|
Bazel, CMake, vcpkg
|
Log4cplus
|
Cross-platform, C++17 Logging API (modeled after the Java log4j API) providing thread-safe, flexible, and arbitrarily granular control over log management and configuration.
|
BSD (two clause) or Apache 2.0
|
Autotools, CMake, Visual Studio
|
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. (Src)
|
Apache
|
CMake
|
Pantheios
|
Diagnostic Logging API library, offering a combination of type-safety, efficiency, genericity and extensibility
|
BSD-style
|
|
plog
|
Portable and simple log for C++ in less than 1000 lines of code
|
MPL-2.0
|
|
Quill
|
Cross-platform, C++14 Asynchronous Low Latency Logging Library
|
MIT
|
CMake
|
spdlog
|
Super fast, header only, C++ logging library
|
MIT
|
CMake, Conan
|
Library
|
Description
|
License
|
Configuration
|
alglib
|
ALGLIB is a cross-platform (Windows/POSIX/Linux) numerical analysis and data processing library. ALGLIB features include: Data analysis, Optimization and nonlinear solvers, Interpolation, Linear algebra and linear solvers, FFT and many others.
|
Free (GPL/Personal/Academic) and Commercial
|
|
ArrayFire
|
is a cross-platform (Windows/OSX/Linux) general purpose HPC (CPU/GPU/OpenCL/CUDA/GPGPU) library for parallel computing. ArrayFire domains are: Vector Algorithms, Image Processing, Computer Vision, Signal Processing, Linear Algebra, Statistics, and more. (Src)
|
Custom
|
|
Boost.Math
|
includes several contributions in the domain of mathematics: Floating Point Utilities, Mathematical Constants, Statistical Distributions and Functions, Statistics, Vector Functionals - Norms, Special Functions, Root Finding & Minimization Algorithms, Polynomials and Rational Functions, Interpolation, Quadrature and Differentiation, Filters, Complex Number Functions, Quaternions, Octonions, Integer Utilities (Greatest Common Divisor and Least Common Multiple), Series, Rationals and Continued Fractions.
|
BSL-1.0
|
|
Boost.Random
|
provides a variety of generators and distributions to produce random numbers having useful properties, such as uniform distribution.
|
BSL-1.0
|
|
Boost.SafeNumerics
|
C++14, header only, Guaranteed Correct Integer Arithmetic, a drop-in replacement for the built-in integer types.
|
BSL-1.0
|
|
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
|
C++ convenience class interface that offers overloaded functions and operators. The GMP is a free C library for arbitrary precision arithmetic, operating on signed integers, rational and floating-point numbers.
|
GNU LGPL v3 and GNU GPL v2
|
|
libmpdec++
|
Cross-platform library for correctly-rounded arbitrary precision decimal floating point arithmetic.
|
BSD-2-Clause
|
Autoconf, Visual Studio build scripts
|
NTL
|
A Library for doing Number Theory. NTL is a high-performance, portable C++ library providing data structures and algorithms for manipulating signed, arbitrary length integers, and for vectors, matrices, and polynomials over the integers and over finite fields.
|
LGPLv2.1+
|
|
PCGrand
|
PCG is a family of simple fast space-efficient statistically good algorithms for random number generation. Unlike many general-purpose RNGs, they are also hard to predict.
|
Apache
|
|
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.
|
|
|
Library
|
Description
|
License
|
Configuration
|
Boost.CallableTraits
|
|
BSL-1.0
|
|
Boost.Hana
|
New metaprogramming library for both types and values
|
BSL-1.0
|
|
Boost.Metaparse
|
Compile-time parser library, producing types, values, and metafunctions from compile-time strings
|
BSL-1.0
|
|
Boost.Mp11
|
|
BSL-1.0
|
|
Boost.MPL
|
Original metaprogramming library, targeted at C++03, slow
|
BSL-1.0
|
|
Boost.PFR
|
A header only C++14 library for basic reflection (without macros): visiting members of a user defined type by index, IO streaming.
|
BSL-1.0
|
|
Boost.Proto
|
A library for building expression template-backed EDSLs
|
BSL-1.0
|
|
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
|
|
|
Refureku
|
C++17 runtime reflection and code generation library
|
MIT
|
CMake
|
visit_struct
|
A miniature reflection library, providing structure visitors for C++11/14. Self-contained, 200-400 lines of code depending how you count.
|
|
|