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 Google.
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] Generic
- Boost - large collection of generic libraries (Boost License)
- BDE - The BDE Development Environment from Bloomberg L.P. (Apache License)
- 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)
- JUCE - An extensive, mature, cross-platform C++ toolkit (GPL License)
- Loki - design patterns
- Reason - xml, xpath, regex, threads, sockets, http, sql, date-time, streams, encoding and decoding, filesystem, compression (GPL License)
- Yomm11 - Open multi-methods for C++11 (Boost License)
- Folly - Facebook Open-source LibrarY. Library of C++11 components designed with practicality and efficiency in mind.
- cxxomfort - Backports of C++ features (C++11 to C++03 and C++1y proposals to C++11/C++03).
- libsourcey - Cross-platform C++11 library for high speed networking and media encoding. HTTP, WebSockets, TURN, STUN, Symple and more...
- OnPosix - C++ library providing several abstractions (e.g., threading, networking, logging, IPC, etc.) on POSIX platforms.
- Ultimate++ - Cross-platform rapid application development framework
- 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).
- wdl-AmirFJ - a modified version of WDL-OL with some improvements.
- cpp-mmf - A C++98 library that encapsulates memory-mapped-files for POSIX or Windows
- CommonPP - Multi-purpose library with a strong emphasis on getting metrics out of a project. (BSD)
- Better Enums - Reflective enums (enum to string, iteration, etc.) with constexpr support. (BSD)
[edit] Communication
- C++ RESTful framework - C++ micro-framework designed to be embedded into a wide range of applications.
- C++ REST SDK - asynchronous HTTP client and listener, asynchronous Stream, URI, JSON
- cpr - a modern C++ HTTP requests library
- cpp-netlib - cpp-netlib: The C++ Network Library
- Boost.Asio - asynchronous and synchronous networking, timers, serial I/O
- POCO - networking: encryption, HTTP; Zip files
- ACE - asynchronous networking, event demultiplexing, messaging, CORBA
- wvstreams
- gsoap
- Unicomm - asynchronous networking, high-level TCP communication framework
- restful_mapper - ORM for consuming RESTful JSON APIs in C++
- zeromq - fast message queue
- curlpp - C++ wrapper for CURL library
- 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.
- libashttp - asynchronous HTTP client library
- Simple C++ REST library - Very simple and self documenting library for creating a REST API in your c++ application
- libtins - Network packet crafting and sniffing library
- HTTPP - Simple, production ready HTTP server built on top of Boost and a client built on top of libcurl. (BSD)
[edit] Graphic user interface
- FLTK
- nana[doc] - GUI programming in modern C++ style (Boost License)
- WxWidgets[src][doc]
- 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)
- GTK+
- Qt
[edit] General Multimedia
[edit] Graphics
- Plotting
- Formats
[edit] Audio
- Fingerprinting
- Formats
- Tagging
- CD
[edit] Image Processing
[edit] Video
[edit] 3D Graphics
- bgfx Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
- Ogre3D
- OpenGL
- GLEW OpenGL function loading
- GLFW OpenGL window manager
- GLM Header only C++ mathematics library for rendering
- assimp 3D model loading
- VTK
- Magnum C++11 and OpenGL/GLES/WebGL graphics engine
- Irrlicht
- Horde3D
[edit] Game Engine Architecture
[edit] Internationalization
[edit] Math
- alglib
- ArrayFire High Performance Computation Library
- GNU MP bignum C++ interface
- Boost.Multiprecision
- Boost.Math.Special Functions and Statistical Distributions
- Boost.Random
- NTL - A Library for doing Number Theory
- cpp-measures - A header-only C++11 library to handle physical measures
- G+Smo cross-platform library for isogeometric analysis
- Linear algebra
- Graph theory
- Boost.Graph
- LEMON
- OGDF - Open Graph Drawing Framework
- NGraph - a simple (Network) Graph library in C++
- Class Library for Numbers
- Machine Learning
- liblinear
- Dlib - machine learning tools
- MLPACK - machine learning package
- Shogun - large scale machine learning toolbox
- Computational geometry
- CGAL - Computational geometry algorithms library
- Wykobi - Computational geometry library
- PCL - Point Cloud library
[edit] Financial Calculations
[edit] Concurrency
- Intel TBB
- OpenMP
- Thrust STL-like algorithms and data-structures for CUDA
- ViennaCL Linear algebra and algorithms with OpenMP, CUDA, and OpenCL backends
- VexCL C++ expression templates library for OpenCL and CUDA
- Boost.Compute (unofficial) STL-like algorithms and data-structures for OpenCL
- Boost.Interprocess
- Boost.Thread
- Boost.Atomic
- Boost.Lockfree
- Boost.MPI
- Boost.Context
- libopenmpi
- libsimdpp
- HPX A general purpose C++ runtime system for parallel and distributed applications of any scale
- SObjectizer A small framework for simplification of development of concurrent and event-driven applications in C++ by using actor and publish-subscribe models.
[edit] Containers
- 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.
[edit] Serialization
- Boost.Serialization
- libs11n
- sweet_persist
- protobuf
- C++ XML objects
- yaml-cpp
- YAS (Yet Another Serialization)
- cereal (C++11 serialization)
[edit] Testing
- Boost.Test
- cppunit
- Google Test
- Catch
- jest - A sane and minimal C++14 unit test framework
[edit] Benchmarking
[edit] XML
[edit] JSON
- jsonme--
- ThorsSerializer
- JsonBox
- jsoncpp
- zoolib
- JOST
- CAJUN
- libjson
- nosjob
- rapidjson
- jsoncons - jsoncons is a C++ library for the construction of tree structured json values. It also supports an event-based streaming API.
- JSON++
- qjson
- json-cpp
- jansson - Jansson is C library for encoding, decoding and manipulating JSON data.
- json11 - json11 is a tiny JSON library for C++11, providing JSON parsing and serialization.
- JSON Voorhees - Killer JSON for C++
- jeayeson - A very sane (header only) C++14 JSON library
- ujson - µjson is a small, C++11, UTF-8, JSON library
- minijson - C++ DOM-less and allocation-free JSON parsing and serialization
[edit] Web
- libNavajo - light and powerful http server for web application development (LGPL License)
- libmusicbrainz5
- liblastfm
- libkcddb
- Chromium Embedded
- Wt[src][doc]
[edit] GPS
[edit] Databases
- brig
- DTL
- libpqxx
- lmdb++ - C++11 wrapper for the LMDB embedded B+ tree database library.
- mysql++
- ODB - C++ Object-Relational Mapping (ORM)
- QUINCE: QUeries IN C++ Expressions (ORM+EDSL)
- QxOrm - C++ Qt Object-Relational Mapping (ORM)
- SOCI
- sqlpp11
[edit] Cryptography
[edit] File metadata
[edit] Text
- Parse
- PEGTL - Parsing Expression Grammar Template Library
- Search
[edit] Terminal
[edit] Configuration
[edit] Embedded languages bindings
- ChaiScript
- ExprTk
- lua
- AngelScript - a scripting language like C++.
- mozjs
- muparser
- PythonQt
[edit] Embedded/realtime
- QP/C++ - RTOS kernel, dual GPL
- FreeRTOS C++ Handler - handler, looper, state machine, CLI, portable
- ETL - Embedded Template Library - C++ 03, Portable template library tailored for low resource platforms