ویژگی تصویر

لیستی از کتابخانه های منبع باز C++

  /  سی پلاس پلاس   /  لیستی از کتابخانه های منبع باز C++
بنر تبلیغاتی الف

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

Package managerDescription
build2An open source (MIT), cross-platform build toolchain that aims to approximate Rust Cargo’s convenience for developing and packaging C/C++ projects while providing more depth and flexibility, especially in the build system.
cgetCmake package retrieval. This can be used to download and install cmake packages.
cmoduleNon-intrusive CMake dependency management.
conanDecentralized, open-source (MIT), C/C++ package manager.
CPM.cmakeA CMake script that adds dependency management capabilities to CMake. It’s built as a thin wrapper around CMake’s FetchContent module that adds version control, caching, a simple API and more.
hunterA CMake driven cross-platform package manager for C/C++ projects.
spackA package manager for supercomputers, Linux, and macOS. It makes installing scientific software easy. It isn’t tied to a particular language.
teaportA cocoapods inspired dependency manager.
vcpkgA C++ package manager for Windows, Linux, and macOS.
 [ExpandLibraries: Table Of Contents

Libraries

Audio

LibraryDescriptionLicenseConfiguration
AquilaAquila is an open source and cross-platform DSP library for C++11.MITCMake
EssentiaOpen-source library and tools for audio and music analysis, description and synthesis (MIR) (Src)Affero GPLv3
FFTWA library for computing the DFT (SSE/SSE2/AVX/Altivec/ARM Neon). (Src)GPL-2.0CMake
KFRFast, 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.0CMake
soundtouchSoundTouch 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.1Makefile

 

Fingerprinting
LibraryDescriptionLicenseConfiguration
chromaprintChromaprint 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.1CMake
libmusicbrainzThe 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.1CMake
libofaOpen-source audio fingerprint by MusicIPAPLmakefile

 

Formats
LibraryDescriptionLicenseConfiguration
audiofileThe Audio File Library handles reading and writing audio files in many common formats. (Src)LGPL-2.1makefile
flacFLAC 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
libsndfileLibsndfile 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

 

Tagging
LibraryDescriptionLicenseConfiguration
id3libid3lib 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
taglibTagLib 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

 

CD
LibraryDescriptionLicenseConfiguration
libkcompactdiscLibrary for interfacing with CDsGPL v2.0CMake

Benchmarking

LibraryDescriptionLicenseConfiguration
benchmarkA library to benchmark code snippets, similar to unit testsApache License 2.0CMake
CeleroFeature-rich C++ Benchmark Authoring Library/Framework. Supports Windows, Linux, and OSX using C++11.Apache LicenseCMake
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” Licenseconfigure
plf::nanotimerLowest-overhead, cross-platform simple timer class for benchmarking.zlib license

Communication

LibraryDescriptionLicenseConfiguration
ACEasynchronous networking, event demultiplexing, messaging
Apache ThriftThe 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.Asioasynchronous and synchronous networking, timers, serial I/OBSL-1.0
Boost.BeastHTTP and WebSocket library built on top of Boost.AsioBSL-1.0
BreepEvent based, high-level, peer-to-peer library, allowing users to directly send and receive objects.European Union Public License 1.1CMake
C++ REST SDKasynchronous HTTP client and listener, asynchronous Stream, URI, JSONMIT LicenseCMake
cpp-netlibcpp-netlib: The C++ Network LibraryBSL-1.0CMake
cpra modern C++ HTTP requests libraryMIT LicenseCMake
CrowCrow is a (header only) C++ micro web framework (inspired by Python Flask)BSD-3-ClauseCMake
curlppC++ wrapper for CURL library
DumaisLibVarious utilities such as WebServer, JSON, WebSocket server, REST framework (a library for creating a REST API in your c++ app)MIT LicenseMakefile
EasyHttpA cross-platform HTTP client library with a focus on usability and speed, supporting http response caching and more.MIT LicenseCMake
eCALhigh performance inter-process communicationApache License 2.0CMake
fineftp-serverftp server library for windows and unixMIT LicenseCMake
gRPCgRPC is a modern open source high performance RPC framework that can run in any environment.
gsoapC/C++ development toolkit for XML data bindings, fast WSDL/SOAP/XML Web services, WS-Security, JSON/XML-RPC RESTful services
HTTPPSimple, production ready HTTP server built on top of Boost and a client built on top of libcurl.BSD 2-Clause “Simplified” LicenseCMake, Makefile
IXWebSocketOpen-source WebSocket + HTTP library without dependency, supports SSL and the per message deflate WebSocket extension.BSD 3-Clause “New” or “Revised” LicenseCMake, Makefile
KCPA fast and reliable ARQ protocol that helps applications to reduce network latency.MIT LicenseCMake
libashttpasynchronous HTTP client libraryGNU Lesser General Public License v3.0
libjson-rpc-cppThis framework provides cross platform JSON-RPC (remote procedure call) support for C++. It is fully JSON-RPC 2.0 & 1.0 compatible.MIT LicenseCMake, Conan
libnavajoC++ 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 AGREEMENTCMake
libtinsNetwork packet crafting and sniffing library
nanomsgfast message queue, zeromq successor
netifHeader-only C++14 library for getting network addresses on Windows, Linux, macOS, and FreeBSD.BSD 3-Clause “New” or “Revised” LicenseCMake
nghttp2HTTP/2 C Library and tools (server, client, proxy and benchmarking tools)MIT LicenseCMake, configure
ngrestFast and easy in use JSON RESTful Web Services FrameworkApache License 2.0CMake
nngfast message queue, nanomsg successor
omniORBthe fastest, complete and portable CORBA ORB implementation in C++
OpenDDSDDS (Data Distribution Service) implementation
Paho MQTTModern C++ client for MQTT from EclipseCMake
PcapPlusPlusMultiplatform C++ network sniffing and packet parsing and crafting framework
POCOnetworking: encryption, HTTP; Zip files
rest_rpcmodern, simple, easy to use rpc frameworkCMake
restbedRestbed framework brings asynchronous RESTful functionality to C++11 applications.LicenseCMake
restc-cppTakes 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 LicenseCMake
restful_mapperORM for consuming RESTful JSON APIs in C++CMake, Makefile
seastarHigh performance server-side application framework, based on C++14/C++17.Apache License 2.0CMake, etc.
SiliconThe Silicon C++14 Web Framework: Fast and Robust Web APIsMITCMake
sockppA simple, modern C++ socket libraryBSD 3-Clause “New” or “Revised” LicenseCMake
stream-clientLightweight, header-only, Boost-based client-side socket/connector/socket pool/resolverApache License 2.0CMake
tacopieC++11 TCP LibraryMIT LicenseCMake
TAOCORBA
taox11C++11 based CORBA implementationMIT License
Unicommasynchronous networking, high-level TCP communication framework
uvwlibuv wrapper in modern C++MIT LicenseCMake
WNetWrapWinInet wrapper in C++MIT License
wvstreamsC++ networking library including UniConf and a convenient D-Bus APIGPL
zeromqfast message queue

Concurrency

LibraryDescriptionLicenseConfiguration
BlockingCollectionA C++11 thread safe collection class modeled after .NET BlockingCollection.
Boost.AtomicBoost.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.0CMake
Boost.ContextA C++11 library that provides a cooperative multitasking abstraction on a single thread.BSL-1.0
Boost.Interprocesssimplifies 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.Lockfreeprovides non-blocking (aka lock-free) concurrent data structures: a queue, a stack, and a ringbuffer (spsc_queue).BSL-1.0
Boost.MPIBoost.MPI is a C++-friendly interface to the standard Message Passing Interface MPIBSL-1.0
Boost.ThreadBoost.Thread enables the use of multiple threads of execution with shared data and means for synchronizing data between the threads.BSL-1.0
hipSYCLprovides a clang-based toolchain and a runtime SYCL implementation that can run on multiple target devices (NVIDIA/AMD GPU,s CPU)BSD-2-Clause LicenseCMake
HPXA general purpose C++ runtime system for parallel and distributed applications of any scale
Intel TBBIntel® 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 CommercialCMake, Makefile
KOKKOSA programming model in C++ for writing performance portable HPC applications
libopenmpiThe Open MPI Project is an open source Message Passing Interface implementation3-clause BSD license
libsimdppA portable header-only zero-overhead C++ low level SIMD library.Boost LicenseCMake
MutexGearMutex-only synchronization (wheel, rwlock, work queues)The MutexGear Library Licenseconfigure, MSVC
OpenMPThe OpenMP API specification for parallel programming
RaftLibC++ stream like concurrent actors
SObjectizerA small framework for simplification of development of concurrent and event-driven applications in C++ by using actor and publish-subscribe models.
subprocessa cross platform library for running subprocesses.
TaskflowParallel Task Programming in Modern C++
ThrustSTL-like algorithms and data-structures for CUDA
VexCLC++ expression templates library for OpenCL and CUDA
ViennaCLLinear algebra and algorithms with OpenMP, CUDA, and OpenCL backends
XeniumA header-only library providing various concurrent data structures and reclamation schemes.

Configuration

LibraryDescriptionLicenseConfiguration
Boost.Program_optionsThe 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
libconfiniINI parser
uconfigLightweight, header-only, C++17 configuration libraryApache License 2.0CMake

 

XML
LibraryDescriptionLicenseConfiguration
ai-xmlSerialize objects to and from XML by adding a single, minimal, function to a class. Uses libxml++ under the hood.
GPDSGeneral purpose data serializer to serialize objects to and from XML. Uses TinyXML under the hood.
gSOAPXML data bindings
libxml++
pugixmlLight-weight, simple and fast XML parser for C++ with XPath supportMIT LicenseCMake, Conan
tinyxml
tinyxml2Another and work in progress of TinyXML.
Xerces

 

JSON
LibraryDescriptionLicenseConfiguration
ArduinoJsonArduinoJson
Boost.JSONJSON parsing, serialization, and DOM in C++11/17BSL-1.0
CAJUN
janssonJansson is C library for encoding, decoding and manipulating JSON data.
jeayesonA very sane (header only) C++14 JSON library
jiosJSON Input Output StreamsMIT LicenseCMake
JOST
JSON VoorheesKiller JSON for C++
jsonNiels Lohmann JSON
JSON++
json-cpp
json11json11 is a tiny JSON library for C++11, providing JSON parsing and serialization.
JsonBox
jsonconsA header-only library for JSON and JSON-like data formats, with JSON Pointer, JSON Patch, JSONPath, CSV, MessagePack, CBOR, BSON, UBJSON.
jsoncppMIT LicenseCMake, Conan, vcpkg
jsonme–
libjson
minijsonC++ DOM-less and allocation-free JSON parsing and serialization
nosjob
qjson
rapidjson
simdjsonParsing gigabytes of JSON per second
struct_mappingMapping json to and from a c++ structure
ThorsSerializerJSON/BSON/YAML Input Output StreamsMIT LicenseMakefile
ujsonµjson is a small, C++11, UTF-8, JSON library
zoolib

 

YAML
LibraryDescriptionLicenseConfiguration
yaml-cpp

 

TOML
LibraryDescriptionLicenseConfiguration
toml++TOML parser and serializer for C++17 and later
toml11TOML parsing library based on C++11

 

HOCON
LibraryDescriptionLicenseConfiguration
cpp-hoconThe C++ implementation of the HOCON format developed by Pupplet.

 

CSS
LibraryDescriptionLicenseConfiguration
mycssCSS Parser

Containers

LibraryDescriptionLicenseConfiguration
Boost.BimapBSL-1.0
Boost.ContainerBSL-1.0
Boost.FusionBSL-1.0
Boost.HeapBSL-1.0
Boost.Pointer ContainerBSL-1.0
Boost.TupleBSL-1.0
Boost.VariantBSL-1.0
cpp-btreebtree_map, btree_set, btree_multimap, btree_multiset.
DataFrameC++ DataFrame for statistical, Financial, and ML analysis — in modern C++ using native types, continuous memory storage, and no pointers are involvedBSD-3-ClauseCMake, Makefile, Conan
eggs::variantEggs.Variant is a C++11/14 generic, type-safe, discriminated union. It is notable in particular for having very good `constexpr` support.
Frozenconstexpr perfect-hashing-based frozen sets and mapsApache 2.0
ImmerA library of persistent and immutable data structuresBoost LicenseCMake
plf::colonyUnordered “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::liststd::list implementation which sacrifices range-splicing for cache-friendliness, yielding faster insertion, erasure and iteration.
plf::stackDrop-in replacement container for the std::stack container adaptor with better performance than std::vector and std::deque in a stack context.
ring_spanA simplified implementation of Arthur O’Dwyer’s ring_span – ie. a circular buffer view.
strict_variantA fast, never-empty variant targetting C++11. Prevents many undesirable implicit conversions.
TdhLists
YggAn 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

LibraryDescriptionLicenseConfiguration
Botan
crypto++
gnutls
openssl
TomCrypt

Databases

LibraryDescriptionLicenseConfiguration
cpp-redisC++11 Lightweight Redis client: async, thread-safe, no dependency, pipelining, multi-platform.
DTL
EasyQtSqlA lightweight header-only C++11 library for quick and easy SQL querying with QtSql
LevelDBA 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.
mongocxxC++11 driver library for MongoDB
mysql++
ODBODB 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
PgfeThe PostgreSQL client (FrontEnd) API in modern C++Zlib LicenseCMake
QTLA friendly and lightweight C++ database library for MySQL, SQLite and ODBC.
QUINCEQUeries IN C++ Expressions (ORM+EDSL)Boost License
QxOrmObject Relational Mapping (ORM) database library for C++/Qt, supports most common databases, serialization (JSON, binary, XML); standalone multi-threaded HTTP web serverGPLv3 or Proprietary license
redis-cppC++17 Lightweight C++ client header-only library for executing Redis commands.
redis-plus-plusA 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

LibraryDescriptionLicenseConfiguration
AngelScripta scripting language like C++.
ChaiScript
ExprTk
JinxScripting language designed for videogames.
lua
mozjs
muparser
PythonQt
ScriptCallera header only library allowing us to call ruby scripts.
sol2
v8ppBind C++ functions and classes into V8 JavaScript engine

Embedded/Realtime

LibraryDescriptionLicenseConfiguration
distortosobject-oriented C++ RTOS for microcontrollers
ETLEmbedded Template Library – C++03, Portable template library tailored for low resource (embedded) platformsMIT licensed
QP/C++RTOS kernel: Real-Time Embedded Frameworks based on active objects & state machinesGPLv3 License
µcuRESTC++11 REST/JSON server framework for microcontrollers

File metadata

LibraryDescriptionLicenseConfiguration
exempi
exiv2
libkexiv2
rarian

Financial Calculations

LibraryDescriptionLicenseConfiguration
DataFrameC++ DataFrame for statistical, Financial, and ML analysis — in modern C++ using native types, continuous memory storage, and no pointers are involvedBSD-3-ClauseCMake, Makefile, Conan
QuantLibQuantitative finance Library – A free/open-source library for quantitative financemodified BSD license

Game Engine Architecture

LibraryDescriptionLicenseConfiguration
Anax
BOX2DPhysics engine
EntityPlus
EntityX
EnTT

General Multimedia

LibraryDescriptionLicenseConfiguration
Kigs-frameworkModular Multi-purpose Cross Platform FrameworkMIT license
openFrameworksMIT license
SDLSimple 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
SFMLSimple 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 licenseCMake
SIGILSound, 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 PiLicense InfoCMake

Generic

LibraryDescriptionLicenseConfiguration
AbseilAn open-source collection of C++ library code from Google designed to augment the C++ standard library.
Abstract Intrusive ContainersMore flexible than boost::intrusive, but not STL-compatible.
BDEThe Bloomberg Development Environment core libraries from Bloomberg L.P.Apache License
Better EnumsReflective enums (enum to string, iteration, etc.) with constexpr support.BSD License
bitfield.hBit field structure facility, more portable/flexible than the base language facility.
Boostlarge collection of generic librariesBSL-1.0
CAFThe 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 moreBSD License
CinderA community-developed, free and open source library for professional-quality creative coding in C++. (Doc) (Src)Modified BSD LicenseCMake
CommonPPMulti-purpose library with a strong emphasis on getting metrics out of a project.BSD License
composite_op.hBasic class data member introspection, cumbersome and often non-re-entrant, but sometimes useful.
cpp-mmfA C++98 library that encapsulates memory-mapped-files for POSIX or Windows
cxxomfortBackports of C++ features (C++11 to C++03 and C++1y proposals to C++11/C++03).
Dlibnetworking, threads, graphical interfaces, data structures, linear algebra, machine learning, XML and text parsing, numerical optimization, Bayesian nets, and numerous other tasksBoost License
fcpptFreundlich’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.
FollyFacebook open-source library. Library of C++11 components designed with practicality and efficiency in mind.
GSLGuidelines Support library implementation, recommended by Bjarne Stroustrup, Herb Sutter and Co in C++ Core Guidelines
HistoryModern C++ Undo/Redo FrameworkUnlicense
gsl-liteA single-file header-only version of ISO C++ Guideline Support Library (GSL) for C++98, C++11 and laterMIT License
IP-DOS ™IdeaFarm ™ Piggyback Distributed Operating System: A general purpose programming environment for the C++ language.Proprietary Open SourceOpen Watcom 2.0
JUCEAn extensive, mature, cross-platform C++ toolkitGPL License
KangaruA dependency injection container for C++11 and C++14MIT License
libsourceyCross-platform C++11 library for high speed networking and media encoding. HTTP, WebSockets, TURN, STUN, Symple and more…
LLNL/unitsA run-time C++ library for working with units of measurement and conversions between them and with string representations of units and measurementsBSD 3-Clause “New” or “Revised” LicenseCMake
Lokidesign patterns
nonstd-liteParent of *-lite repositories, a migration path to post-C++11 features for pre-C++11 environmentsBoost License
nytlGeneric C++17 header-only utility template library.Boost License
OnPosixC++ library providing several abstractions (e.g., threading, networking, logging, IPC, etc.) on POSIX platforms.
Reasonxml, xpath, regex, threads, sockets, http, sql, date-time, streams, encoding and decoding, filesystem, compressionGPL License
SaferCPlusPlusSaferCPlusPlus – 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
unitsA compile-time, header-only, dimensional analysis and unit conversion library built on c++14 with no dependenciesMIT License
yaalYet Another Abstraction Layer – algorithms, collections, arbitrary precision calculation, generic-DSL grammar driven parsers and moreCC BY-ND-NC 4.0CMake
YatoModern 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
yomm2Open multi-methods for C++17Boost License

GPS

LibraryDescriptionLicenseConfiguration
gpsd

Graphic user interface

LibraryDescriptionLicenseConfiguration
Dear ImGuiA bloat-free graphical user interface library that is highly optimized.
FLTKFLTK is a cross-platform C++ GUI toolkit (Linux, Windows, MacOS) thatprovides 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++ styleBoost License
nanogui(Doc) Minimalistic cross-platform widget library for OpenGL 3.x or higher
OWLNextModern update to OWL for writing GUI applications in standard C++ on Windows
tiny file dialogsa 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-ClauseMakefile
WxWidgetsA free and open source cross-platform (Windows, GNU/Linux, macOS) C++ framework for writing advanced GUI applications using native controls. (Doc)Modified LGPLCMake, Makefile

 

CopperSpice
LibraryDescriptionLicenseConfiguration
CopperSpice(Doc) (Src) CopperSpice is a set of C++ libraries used to develop cross-platform software applications. It uses modern idiomatic C++ and integrates seamlessly with the STL. CopperSpice was derived from the Qt framework.LGPL-2.1CMake
CsSignalStandalone C++ thread aware signal/slot libraryLGPL-2.1CMake
CsStringStandalone C++ unicode aware string libraryLGPL-2.1CMake
libGuardedStandalone C++ multithreading library for managing access to shared dataLGPL-2.1CMake

 

GTK+
LibraryDescriptionLicenseConfiguration
evince
flowcanvas
glibmm
goocanvasmm
gtkmmgtkmm is a cross-platform C++ interface for the GTK+ GUI library.LGPL
libglademm
libgnomecanvasmm
webkitgtk

 

Qt
LibraryDescriptionLicenseConfiguration
libdbusmenu-qtA 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)
QuickQanavaC++14 network/graph visualization library / Qt node editor.BSD License 2.0CMake
qwt5Qt Widgets for Technical Applications
qwtplot3d

 

Ultimate++
LibraryDescriptionLicenseConfiguration
Ultimate++U++ is a C++ cross-platform rapid application development framework focused on programmers productivity. It includes a set of libraries (GUI, SQL, etc.), and an integrated development environment. (Src/Bin)BSD
upp-componentsA collection of 3rd party packages for Ultimate++ like TerminalCtrl, MessageCtrl etc..BSD-3-Clause

Graphics

LibraryDescriptionLicenseConfiguration
bgfxPowerful cross-platform graphics rendering library, support platforms include Windows Mac Linux iOS Android Web, rendering backend including DX, opengl, metal webgl and so on.
cairommcairomm 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
dfpsr2D, 3D and isometric software renderer with desktop GUI toolkit, minimalistic dependency, designed for long time maintenance and can run without any 3D accelerated driverszlib license
geglGEGL (Generic Graphics Library) is a data flow based image processing framework, providing floating point processing and non-destructive image processing capabilities. (Src)LGPL
io2dReference Implementations of P0267, the proposed 2D graphics API for ISO C++Boost LicenseCMake
nanovg2D drawing library based on openGL/DX/metal.
nuxAn OpenGL toolkitLGPL v3
pangommpangomm is the official C++ interface for the Pango font layout library. (Src)LGPL v2.1Makefile
SkiaSkia 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
TXLibTX Library is a tiny 2D graphics library for Win32 written in C++.
ULISCross-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 sequencesCustom (free-of-charge for non-commercial purposes only)CMake

Images

LibraryDescriptionLicenseConfiguration
Adobe/boost GILhigh-level generic library, focused on algorithms that operate on 2D images. Very limited I/O options.BSL-1.0
aggeAnti-Grain Evolution. 2D graphics engine for Speed and Quality in C++MIT LicenseCMake
FreeImageFreeImage is an Open Source library project for developers who would like to support popular graphics image formats like PNG, BMP, JPEG, TIFF and othersGPLv2, GPLv3, FIPL
GraphicsMagickReading, writing, and manipulating images in over 88 major formats. Forked from ImageMagick in 2002CopyrightMercurial
SAILReading and writing static, animated, multi-paged images along with their meta data and ICC profiles. No manipulating capabilities. Targets simplicity and speed.MITCMake
stbThe 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.MITheader-only

 

Plotting
LibraryDescriptionLicenseConfiguration
Matplot++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 LicenseCMake
plotutilsThe 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

 

Formats
LibraryDescriptionLicenseConfiguration
djvulibre
imagemagick
Kaitai Struct C++ runtime
libraw
openexr
poppler
qimageblitz
SVG++

Graphics (3D)

LibraryDescriptionLicenseConfiguration
assimp3D model loading
bgfxCross-platform, graphics API agnostic, “Bring Your Own Engine/Framework” style rendering library.
Diligent EngineA modern cross-platform low-level 3D graphics library.
EpoxyModern 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.
G3DThe 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
GLADCustomizable, lightweight library for loading OpenGL functions
GLEWOpenGL function loading
GLFWOpenGL window manager
GLMHeader only C++ mathematics library for rendering
hlsl++Header only C++ math library for rendering using hlsl syntax. Supports SSE and NEON
Horde3D
Irrlicht
kleinC++11/14/17 SSE-optimized Projective Geometric Algebra library for graphics and animation
MagnumLightweight and modular C++11/C++14 graphics middleware for games and data visualization
Ogre3D
Open CASCADESDK for 3D CAD/CAM/CAE applications
OpenGL
OpenSceneGraph
VisionarayA C++ ray tracing template library
VTK
Vulkan

Image Processing

LibraryDescriptionLicenseConfiguration
dlib
ITK
opencv
OTB

Internationalization

LibraryDescriptionLicenseConfiguration
gettext
IBM ICU
spirit-poA small, header-only library which parses po-files and provides an interface similar to GNU libintl. Based on boost::spirit.

Logging

LibraryDescriptionLicenseConfiguration
BackwardPrinting nice Python-styled stack traces with colors and source snippets, especially on crashes (MIT License).
Boost.LogBSL-1.0
glogGoogle Logging Library
Log4cplusLogging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration.
Log4cppA library of C++ classes for flexible logging to files, syslog, IDSA and other destinations (LGPL)
log4cxxApache log4cxx is a logging framework for C++ patterned after Apache log4j
PantheiosDiagnostic Logging API library, offering a combination of type-safety, efficiency, genericity and extensibility
plogPortable and simple log for C++ in less than 1000 lines of code (MPL2)
QuillC++14 Asynchronous Low Latency Logging Library
spdlogSuper fast, header only, C++ logging libraryMIT LicenseCMake, Conan

Error handling

LibraryDescriptionLicenseConfiguration
Boost.LEAFLightweight error-handling library for C++11: single-header format, no dependencies, no dynamic memory allocations, can be used with or without exception handling, multi-threading ready.BSL-1.0

Math

LibraryDescriptionLicenseConfiguration
alglib
ArrayFire High Performance Computation Library
BigNumberC++ class for creating and computing arbitrary-length integers
Boost.MathBoost.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.MultiprecisionThe 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.Randomprovides a variety of generators and distributions to produce random numbers having useful properties, such as uniform distribution.BSL-1.0
Boost.SafeNumericsC++14, header only, Guaranteed Correct Integer Arithmetic, a drop-in replacement for the built-in integer types.BSL-1.0
C++ MatrixHigh performance and accurate (e.g. edge cases) matrix math library with expression template arithmetic operatorsBSD-3-ClauseCMake, Makefile
CasADiSymbolic framework for nonlinear optimization and algorithmic differentiation. Supports C++ code generation for symbolic expressions and dynamic connection of compiled generated code.
cpp-measuresA header-only C++11 library to handle physical measures
G+Smocross-platform library for isogeometric analysis
GNU MP bignum C++ interface
libmpdec++Cross-platform library for correctly-rounded arbitrary precision decimal floating point arithmetic.BSD-2-ClauseAutoconf, Visual Studio build scripts
NTLA 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+
SEMTCompile time symbolic differentiation
stats++Advanced, comprehensive statistical software: data collection and preprocessing, statistics, machine learning, and optimization, with open C++ source code.
StatsLibA templated, header-only library of statistical distribution functions.

 

Numeral Calculations
LibraryDescriptionLicenseConfiguration
LibBFAn arbitrary precision numerical calculation library developed by Bellard with a sample program that calculates pi to billions of bits

 

Linear
algebra
LibraryDescriptionLicenseConfiguration
Armadillo
Blaze
Blitz++
Boost.uBLASBSL-1.0
DecompLibA header-only C++11 library to decompose a vector into a set of positive definite weighted basis vectors.
Dlib – linear algebra tools
EigenEigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.MPL2CMake, Conan
ETL
IT++
MatrixEasy-to-use Scientific Computing library in/for C++ available for Linux and Windows.MIT LicenseCMake
PETScA 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.
xtensorxtensor is a C++ library meant for numerical analysis with multi-dimensional array expressions. (BSD)

 

Optimization
LibraryDescriptionLicenseConfiguration
ceres-solverOpen 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 LicenseCMake, Conan
OptimLibA C++11 library of numerical optimization methods for nonlinear functions.

 

Graph theory
LibraryDescriptionLicenseConfiguration
Boost.GraphBSL-1.0
GTpoGTpo is a C++14 directed graphs modelling library, part of QuickQanava projectBSD licenseQMake, CMake
LEMONLEMON (Library for Efficient Modeling and Optimization in Networks) implements common data structures and algorithms focusing on combinatorial optimization, graphs and networks. (Doc)License
NGraphA simple (Network) Graph library in C++
OGDFOpen Graph algorithms and Data structures Framework – is a C++ library for graph algorithms, in particular for automatic graph drawing.LGPL v2 or v3

 

Class Library for Numbers
LibraryDescriptionLicenseConfiguration
cln
CNLCompositional Numeric Library – fixed-precision numeric typesBSL-1.0CMake, Conan
Universal NumbersA C++17/20 template library providing plug-in replacements for the native arithmetic types (integer/decimal/fixed-point/floating-point/posits/logarithmic/interval)MIT LicenseCMake, Vcpkg, Conan

 

Machine Learning
LibraryDescriptionLicenseConfiguration
Dlibmachine learning tools
FANNFast Artificial Neural Network Library
liblinear
libtorchC++ frontend to the popular PyTorch Python library (backend is written in C++)BSD-style licenseCMake
MLPACKmachine learning package
Shogunlarge scale machine learning toolbox
stats++
tensorflowAn Open Source Machine Learning Framework for Everyone. TensorFlow provides stable C++ API and written mainly in C++Apache-2.0 License

 

Computational geometry
LibraryDescriptionLicenseConfiguration
CGALComputational geometry algorithms library
PCLPoint Cloud library
pmp-libraryPolygon Mesh Processing Library
WykobiComputational geometry library

 

Automata theory
LibraryDescriptionLicenseConfiguration
State Diagram(Doc) An easy to use C++20 library for hierarchical finite state machinesApache 2.0 License
yasmine(Doc) (Src) C++11 UML state machine frameworkLicense
UML_StateMachine(Doc) UML State Machine is a pure C++20 library for defining state charts statically and executing them.GPLv3 LicenseCMake

Metaprogramming

LibraryDescriptionLicenseConfiguration
Boost.CallableTraitsBSL-1.0
Boost.HanaNew metaprogramming library for both types and valuesBSL-1.0
Boost.MetaparseCompile-time parser library, producing types, values, and metafunctions from compile-time stringsBSL-1.0
Boost.Mp11BSL-1.0
Boost.MPLOriginal metaprogramming library, targeted at C++03, slowBSL-1.0
Boost.PFRA 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.ProtoA library for building expression template-backed EDSLsBSL-1.0
BrigandUses eager metafunctions, optimized for best performance
CoMetaLightweight, header-only C++14 metaprogramming library
MetaUses eager metafunctions, middle ground between metal and brigand wrt performance
MetalUses eager metafunctions, 100% SFINAE-friendly
refl-cppA modern compile-time reflection library for C++ with support for overloads, templates, attributes and proxies
RefurekuC++17 runtime reflection and code generation libraryMIT LicenseCMake
visit_structA miniature reflection library, providing structure visitors for C++11/14. Self-contained, 200-400 lines of code depending how you count.

PDF

LibraryDescriptionLicenseConfiguration
HARU
JagPDF
PoDoFo

Physics and Simulations

LibraryDescriptionLicenseConfiguration
BulletPhysics simulation for games, visual effects, robotics and reinforcement learning
HELICSCo-simulation framework for synchronizing time and exchanging data between different types of simulatorsBSD 3-Clause “New” or “Revised” LicenseCMake
ProjectCHRONOAn Open Source Multi-physics Simulation Engine
ReactPhysics3DC++ physics engine library for 3D simulations and game

Serialization

LibraryDescriptionLicenseConfiguration
Boost.SerializationBSL-1.0
C++ XML objects
cerealC++11 serializationBSD license
cppcodecHeader-only C++11 library to encode/decode base64, base32 and hex with consistent, flexible API (MIT License)
GPDSGeneral purpose data serializer to serialize objects to and from XML. Uses TinyXML under the hood.
gSOAPaccurate XML serialization
iguanaiguana 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 LicenseCMake
jiosJSON serializationMIT LicenseCMake
libs11n
protobuf
rpnx-serialA library that can (de)serialize types like std::map, std::vector, etc.
sweet_persist
ThorsSerializerC++ Serialization library for JSONMIT LicenseMakefile
yaml-cpp
YASYet Another Serialization. YAS is C++11 library; no third-party libraries dependencies. Archives can be binary, text, JSONBoost LicenseHeader only

 

Binary serialization
LibraryDescriptionLicenseConfiguration
binnA binary serialization library designed to be compact, fast, and easy to use, itself an implementation of the same name format.
blobifyC++17 header-only, infers the serialized layout from the structure definition alone.Boost LicenseCMake
bson-cxxC++ implementation in BSON format.
fast_berHigh-performance serialization using BER/DER encoding rules. Encoding layout is defined by ASN.1 schemas. Follows modern C++ practices, written in C++11.
UBjsonCppHigh-performance UBJson read-write library based on C++14

Sorting

LibraryDescriptionLicenseConfiguration
IndiesortTemplated 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 arrayszlib license
TimsortTemplated stable sorting function which outperforms quicksort-based algorithms including std::sort, for reversed or semi-sorted data.MIT

System

LibraryDescriptionLicenseConfiguration
InfowareC++ Library for pulling system and hardware information, without hitting the command line.Creative Commons v1.0 LicenseCMake

Terminal

LibraryDescriptionLicenseConfiguration
cwidget
replxxA readline and libedit replacement that supports UTF-8, syntax highlighting & hints.

Testing

LibraryDescriptionLicenseConfiguration
banditHuman-friendly unit testing for C++11
Boost.TestBSL-1.0
Catch2
cppunit
doctestThe lightest feature-rich C++ single-header testing framework for unit tests and TDDMIT LicenseCMake
ELFspyTesting in isolation with fakes and spies – Linux only
Google Test
lestA modern, C++11-native, single-file header-only, tiny framework for unit-tests, TDD and BDD (includes C++98 variant).
liblittletestPortable, one file header-only testing framework
tunitModern c++17 unit testing library on Windows, macOS, Linux, iOS and android. Office siteMIT LicenseCMake

See also

List of C++ unit testing frameworks at Wikipedia

Text

 

Coding
LibraryDescriptionLicenseConfiguration
uchardetThe ability to guess string encoding is basically the same as the uchardet function in Python.
win-iconvThe character set encoding conversion library for Linux and Mac The Windows implementation of iconv is based on the Win32 Character Set Conversion API.

 

Format
LibraryDescriptionLicenseConfiguration
fmtopen-source formatting library providing a fast and safe alternative to C stdio and C++ iostreamsCMake, Conan

 

Parse
LibraryDescriptionLicenseConfiguration
BNFliteA single file header only lightweight grammar parser library
PEGTLParsing Expression Grammar Template Library

 

Search
LibraryDescriptionLicenseConfiguration
clucene
StepUkkonen’s online algorithm for constructing suffix tree, Manber’s algorithm for constructing suffix array.MIT LicenseHeader only
xapian

 

Template
Engine
LibraryDescriptionLicenseConfiguration
injaA Template Engine for Modern C++
Jinja2C++Modern C++ implementation of Jinja2 templates

Version Control

LibraryDescriptionLicenseConfiguration
coo-semverThe C++ operation library for semantic version numbers.
LibGit2Version Control System Git’s core library.

Video

LibraryDescriptionLicenseConfiguration
crystalhd
gstreamermm
libmatroska
libVLC
mjpegtools

Web

LibraryDescriptionLicenseConfiguration
Chromium Embedded
cpp-jwt
DrogonA C++14/17 based HTTP web application framework running on Linux/macOS/Unix/Windows.
libhttpserver
libkcddb
liblastfm
libmusicbrainz5
libnavajo
oatppLight and powerful web-framework for IoT and high-performance web-services. Zero-dependency and easy-portable.
QtWebAppHTTP(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

آیا این مطلب برای شما مفید بود ؟

خیر
بله
بنر تبلیغاتی ج