C++ 开源库列表

C++ 开源库列表
https://en.cppreference.com/w/cpp/links/libs

Audio

| Library | Description | License | Configuration |
| Aquila | Aquila is an open source and cross-platform DSP library for C++11. | MIT | CMake |
| Essentia | 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 |
| KFR | 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 |
| soundtouch | 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 | Makefile |

<dl>

<dt>Fingerprinting</dt>

</dl>

| Library | Description | License | Configuration |
| chromaprint | 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 | Open-source audio fingerprint by MusicIP | APL | makefile |

<dl>

<dt>Formats</dt>

</dl>

| Library | Description | License | Configuration |
| audiofile | The Audio File Library handles reading and writing audio files in many common formats. (Src) | LGPL-2.1 | makefile |
| flac | FLAC stands for Free Lossless Audio Codec, meaning that audio is compressed in FLAC without any loss in quality. FLAC stands out as the fastest and most widely supported lossless audio codec, non-proprietary, is unencumbered by patents. | Open Source, BSD, GPL | |
| libsndfile | Libsndfile is a cross-platform, open-source library for reading and writing files containing sampled sound (such as Windows WAV and the Apple/SGI AIFF format) through one standard library interface. | LGPL v2.0 or v3.0 | |

<dl>

<dt>Tagging</dt>

</dl>

| Library | Description | License | Configuration |
| id3lib | id3lib is/was 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 | 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 | |

<dl>

<dt>CD</dt>

</dl>

| Library | Description | License | Configuration |
| libkcompactdisc | Library for interfacing with CDs | GPL v2.0 | CMake |

Benchmarking

| Library | Description | License | Configuration |
| benchmark | A library to benchmark code snippets, similar to unit tests | Apache License 2.0 | CMake |
| Celero | Feature-rich C++ Benchmark Authoring Library/Framework. Supports Windows, Linux, and OSX using C++11. | 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 | 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 |
| C++ REST SDK | asynchronous HTTP client and listener, asynchronous Stream, URI, JSON | MIT License | CMake |
| cpp-netlib | cpp-netlib: The C++ Network Library | BSL-1.0 | CMake |
| cpr | a modern C++ HTTP requests library | MIT License | CMake |
| Crow | Crow is a (header only) C++ micro web framework (inspired by Python Flask) | BSD-3-Clause | 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 |
| DumaisLib | Various utilities such as WebServer, JSON, WebSocket server, REST framework (a library for creating a REST API in your c++ app) | MIT License | Makefile |
| 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 (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 | | |
| 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 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. |
| 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" 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 | |
| Unicomm | asynchronous networking, high-level TCP communication framework | | |
| uvw | libuv wrapper in modern C++ | MIT License | CMake |
| wvstreams | C++ networking library including UniConf and a convenient D-Bus API | GPL | |
| zeromq | fast message queue | | |

Concurrency

| Library | Description | License | Configuration |
| BlockingCollection | A C++11 thread safe collection class modeled after .NET BlockingCollection. | | |
| Boost.Atomic | 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 | Boost.MPI is a C++-friendly interface to the standard Message Passing Interface MPI | BSL-1.0 | |
| Boost.Thread | Boost.Thread enables the use of multiple threads of execution with shared data and means for synchronizing data between the threads. | BSL-1.0 | |
| hipSYCL | provides a clang-based toolchain and a runtime SYCL implementation that can run on multiple target devices (NVIDIA/AMD GPU,s CPU) | BSD-2-Clause License | 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 License 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 license | |
| 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 | The OpenMP API specification for parallel programming | | |
| 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 | 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 | |
| gconfmm | | | |
| libconfig | | | |
| libconfini | INI parser | | |

<dl>

<dt>XML</dt>

</dl>

| 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 | | | |

<dl>

<dt>JSON</dt>

</dl>

| 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 | MIT License | CMake |
| 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 | MIT License | Makefile |
| ujson | µjson is a small, C++11, UTF-8, JSON library | | |
| zoolib | | | |

<dl>

<dt>YAML</dt>

</dl>

| Library | Description | License | Configuration |
| yaml-cpp | | | |

<dl>

<dt>TOML</dt>

</dl>

| Library | Description | License | Configuration |
| toml++ | TOML parser and serializer for C++17 and later | | |
| toml11 | TOML parsing library based on C++11 | | |

<dl>

<dt>HOCON</dt>

</dl>

| Library | Description | License | Configuration |
| cpp-hocon | The C++ implementation of the HOCON format developed by Pupplet. | | |

<dl>

<dt>CSS</dt>

</dl>

| Library | Description | License | Configuration |
| mycss | CSS Parser | | |

Containers

| Library | Description | License | Configuration |
| Boost.Bimap | | BSL-1.0 | |
| Boost.Container | | BSL-1.0 | |
| Boost.Fusion | | BSL-1.0 | |
| Boost.Heap | | BSL-1.0 | |
| Boost.Pointer Container | | BSL-1.0 | |
| Boost.Tuple | | BSL-1.0 | |
| Boost.Variant | | BSL-1.0 | |
| 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 | |
| Immer | A library of persistent and immutable data structures | Boost License | 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. | | |
| 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 | 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 License | CMake |
| QTL | A friendly and lightweight C++ database library for MySQL, SQLite and ODBC. | | |
| QUINCE | QUeries IN C++ Expressions (ORM+EDSL) | Boost License | |
| 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 license | |
| 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 (embedded) platforms | MIT licensed | |
| QP/C++ | RTOS kernel: Real-Time Embedded Frameworks based on active objects & state machines | GPLv3 License | |
| µ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 - A free/open-source library for quantitative finance | modified BSD license | |

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; multi-platform (Windows, Linux, macOS and soon Android & iOS); provides a simple interface to ease the development of games and multimedia applications. It is composed of five modules: system, window, graphics (over OpenGL), audio and network. | zlib/png license | CMake |
| SIGIL | Sound, Input, and Graphics Integration Library; mind-bogglingly simple, cross-platform, minimalist library for text, shapes, input, audio, and 2D images. Supported platforms: Windows, Linux and Raspberry Pi | License Info | CMake |

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 | 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 License | |
| Cinder | A community-developed, free and open source library for professional-quality creative coding in C++. (Doc) (Src) | Modified BSD License | CMake |
| 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 | | |
| History | Modern C++ Undo/Redo Framework | Unlicense | |
| gsl-lite | A single-file header-only version of ISO C++ Guideline Support Library (GSL) for C++98, C++11 and later | MIT License | |
| 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 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... | | |
| LLNL/units | A run-time C++ library for working with units of measurement and conversions between them and with string representations of units and measurements | BSD 3-Clause "New" or "Revised" License | CMake |
| 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 | |
| units | A compile-time, header-only, dimensional analysis and unit conversion library built on c++14 with no dependencies | MIT License | |
| 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 | |
| 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 | FLTK is a cross-platform C++ GUI toolkit (Linux, Windows, MacOS) that

provides modern GUI functionality, and supports 3D graphics via OpenGL/GLUT. FLTK is designed to be small and modular. FLTK also includes an UI builder.

| LGPL ver.2 | |
| nana | (Doc) GUI programming in modern C++ style | Boost License | |
| nanogui | (Doc) 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) | | |
| Ultimate++ | Cross-platform (Windows, GNU/Linux, macOS) rapid application development framework with bundled IDE. C++17 Compatible. (Doc) (Src) | BSD-3-Clause | Makefile |
| WxWidgets | A free and open source cross-platform (Windows, GNU/Linux, macOS) C++ framework for writing advanced GUI applications using native controls. (Doc) | Modified LGPL | CMake, Makefile |

<dl>

<dt>CopperSpice</dt>

</dl>

| Library | Description | License | Configuration |
| CopperSpice | (Doc) (Src) 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 | | |

<dl>

<dt>GTK+</dt>

</dl>

| Library | Description | License | Configuration |
| evince | | | |
| flowcanvas | | | |
| glibmm | | | |
| goocanvasmm | | | |
| gtkmm | gtkmm is a cross-platform C++ interface for the GTK+ GUI library. | LGPL | |
| libglademm | | | |
| libgnomecanvasmm | | | |
| webkitgtk | | | |

<dl>

<dt>Qt</dt>

</dl>

| Library | Description | License | Configuration |
| libdbusmenu-qt | A small library designed to make sharing and displaying of menu structures over DBus simple and easy to use. It works for both QT and GTK+ and makes building menus simple. | | |
| Qt | (Doc) (Src) | | |
| QuickQanava | C++14 network/graph visualization library / Qt node editor. | BSD License 2.0 | CMake |
| qwt5 | Qt Widgets for Technical Applications | | |
| qwtplot3d | | | |

<dl>

<dt>Ultimate++</dt>

</dl>

| Library | Description | License | Configuration |
| upp-components | A collection of 3rd party packages for Ultimate++ like TerminalCtrl, MessageCtrl etc.. | BSD-3-Clause | |

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 | cairomm is 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 license | |
| 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 License | CMake |
| nanovg | 2D drawing library based on openGL/DX/metal. | | |
| nux | An OpenGL toolkit | LGPL v3 | |
| pangomm | pangomm is the official C++ interface for the Pango font layout library. (Src) | LGPL v2.1 | Makefile |
| Skia | 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 License | |
| 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 |

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. | BSL-1.0 | |
| agge | Anti-Grain Evolution. 2D graphics engine for Speed and Quality in C++ | MIT License | CMake |
| FreeImage | FreeImage is an Open Source library project for developers who would like to support popular graphics image formats like PNG, BMP, JPEG, TIFF and others | GPLv2, GPLv3, FIPL | |
| GraphicsMagick | Reading, writing, and manipulating images in over 88 major formats. Forked from ImageMagick in 2002 | Copyright | Mercurial |
| SAIL | Reading and writing static, animated, multi-paged images along with their meta data and ICC profiles. No manipulating capabilities. Targets simplicity and speed. | MIT | CMake |
| stb | The header-only libraries for C/C++, mostly game-dev oriented. The noteworthy caps: image loader/writer/resizer; font text rasterizer; type-safe containers; ogg vorbis decoder; real-time DXT compressor; Perlin noise generator; lexer for pet DSLs; fast sprintf. | MIT | header-only |

<dl>

<dt>Plotting</dt>

</dl>

| Library | Description | License | Configuration |
| Matplot++ | A gnuplot based C++ Graphics Library for Data Visualization. Matplot++ can take advantage of the following libs: OpenCV, OpenGL, LAPACK, BLAS, FFTW, JPEG, TIFF, ZLIB, PNG, GLAD, GLFW3. (Doc) | MIT License | CMake |
| plotutils | The GNU plotutils package contains libplot, a C/C++ library for exporting 2-D vector graphics in many file formats, both vector and bitmap. libplot can animate 2-D vector graphics and uses a Postscript-like API for file export and graphics animations. | GPL | |

<dl>

<dt>Formats</dt>

</dl>

| 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. | | |
| 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 license | |
| 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 | | BSL-1.0 | |
| 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 | 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.Multiprecision | The Multiprecision Library provides integer, rational, floating-point, and complex types in C++ that have more range and precision than C++'s ordinary fundamental (built-in) types. | 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 | |
| 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. 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+ | |
| 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. | | |

<dl>

<dt>Numeral Calculations</dt>

</dl>

| 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 | | |

<dl>

<dt>Linear algebra</dt>

</dl>

| Library | Description | License | Configuration |
| Armadillo | | | |
| Blaze | | | |
| Blitz++ | | | |
| Boost.uBLAS | | BSL-1.0 | |
| 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) | | |

<dl>

<dt>Optimization</dt>

</dl>

| Library | Description | License | Configuration |
| ceres-solver | Open source C++ library for modeling and solving large, complicated optimization problems. It is a feature rich, mature and performant library which has been used in production at Google since 2010. | Apache License | CMake |
| OptimLib | A C++11 library of numerical optimization methods for nonlinear functions. | | |

<dl>

<dt>Graph theory</dt>

</dl>

| Library | Description | License | Configuration |
| Boost.Graph | | BSL-1.0 | |
| GTpo | GTpo is a C++14 directed graphs modelling library, part of QuickQanava project | BSD license | QMake, CMake |
| LEMON | LEMON (Library for Efficient Modeling and Optimization in Networks) implements common data structures and algorithms focusing on combinatorial optimization, graphs and networks. (Doc) | License | |
| NGraph | A simple (Network) Graph library in C++ | | |
| OGDF | Open Graph algorithms and Data structures Framework - is a C++ library for graph algorithms, in particular for automatic graph drawing. | LGPL v2 or v3 | |

<dl>

<dt>Class Library for Numbers</dt>

</dl>

| Library | Description | License | Configuration |
| cln | | | |
| Universal | A C++ template library for universal number arithmetic, replacing IEEE floating point (MIT License) | | |

<dl>

<dt>Machine Learning</dt>

</dl>

| 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++ | | | |
| tensorflow | An Open Source Machine Learning Framework for Everyone. TensorFlow provides stable C++ API and written mainly in C++ | Apache-2.0 License | |

<dl>

<dt>Computational geometry</dt>

</dl>

| Library | Description | License | Configuration |
| CGAL | Computational geometry algorithms library | | |
| PCL | Point Cloud library | | |
| pmp-library | Polygon Mesh Processing Library | | |
| Wykobi | Computational geometry library | | |

<dl>

<dt>Automata theory</dt>

</dl>

| Library | Description | License | Configuration |
| yasmine | (Doc) (Src) C++11 UML state machine framework | License | |

Metaprogramming

| 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.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 | | |
| visit_struct | A miniature reflection library, providing structure visitors for C++11/14. Self-contained, 200-400 lines of code depending how you count. | | |

PDF

| 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 | | |
| HELICS | Co-simulation framework for synchronizing time and exchanging data between different types of simulators | BSD 3-Clause "New" or "Revised" License | CMake |
| 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 | | BSL-1.0 | |
| C++ XML objects | | | |
| cereal | C++11 serialization | BSD license | |
| 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 | iguana is a modern, universal and easy-to-use serialization engine developed in C++17, based on compile-time Reflection. Supported formats: JSON, XML, user-defined. | Apache-2.0 License | CMake |
| jios | JSON serialization | MIT License | CMake |
| libs11n | | | |
| protobuf | | | |
| rpnx-serial | A library that can (de)serialize types like std::map, std::vector, etc. | | |
| sweet_persist | | | |
| ThorsSerializer | C++ Serialization library for JSON | MIT License | Makefile |
| yaml-cpp | | | |
| YAS | Yet Another Serialization. YAS is C++11 library; no third-party libraries dependencies. Archives can be binary, text, JSON | Boost License | Header only |

<dl>

<dt>Binary serialization</dt>

</dl>

| 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 license | |
| 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 v1.0 License | CMake |

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 | | BSL-1.0 | |
| Catch2 | | | |
| cppunit | | | |
| doctest | The lightest feature-rich C++ single-header testing framework for unit tests and TDD | MIT License | CMake |
| 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

<dl>

<dt>coding</dt>

</dl>

| 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. | | |

<dl>

<dt>format</dt>

</dl>

| Library | Description | License | Configuration |
| fmt | printf is not easy to use, ostream is not easy to use, format is easy to use | | |

<dl>

<dt>Parse</dt>

</dl>

| Library | Description | License | Configuration |
| BNFlite | A single file header only lightweight grammar parser library | | |
| PEGTL | Parsing Expression Grammar Template Library | | |

<dl>

<dt>Search</dt>

</dl>

| Library | Description | License | Configuration |
| clucene | | | |
| Step | Ukkonen's online algorithm for constructing suffix tree, Manber's algorithm for constructing suffix array. | MIT License | Header only |
| xapian | | | |

<dl>

<dt>Template Engine</dt>

</dl>

| 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 | (Doc) (Src) Widgets and building blocks to build web apps, built-in security, PDF rendering, 2D and 3D painting, ORM, charting, authentication frameworks. | GNU GPL or Commercial | |

推荐阅读更多精彩内容