Awesome C/C++
A curated list of awesome C/C++ frameworks, libraries, resources, and shiny things. Inspired by awesome-… stuff.
-
Awesome C/C++
-
Standard Libraries
-
Frameworks
-
Artificial Intelligence
-
Asynchronous Event Loop
-
Audio
-
Biology
-
BitTorrent
-
CLI
-
Compression
-
Concurrency
-
Containers
-
Cryptography
-
Database
-
Debug
-
Game Engine
-
GUI
-
Graphics
-
Image Processing
-
Internationalization
-
Inter-process communication
-
JSON
-
Logging
-
Machine Learning
-
Math
-
Multimedia
-
Networking
-
Physics
-
Robotics
-
Scientific Computing
-
Scripting
-
Serialization
-
Video
-
Virtual Machines
-
Web Application Framework
-
XML
-
Miscellaneous
-
-
Software
-
Resources
-
Other Awesome Lists
-
Contributing
Standard Libraries
C++ Standard Library – including STL Containers, STL Aglorithm, STL Functional, etc.
-
C++ Standard Library
– A collection of classes and functions, which are written in the core language and part of the C++ ISO Standard itself. -
Standard Template Library
– The Standard Template Library (STL). -
C POSIX library
– A specification of a C standard library for POSIX systems. -
ISO C++ Standards Committee
– ISO/IEC JTC1/SC22/WG21 – The C++ Standards Committee.
website
-
The GNU C Library
– The purpose of this manual is to tell you how to use the facilities of the GNU C Library.
Frameworks
C++ generic frameworks and libraries.
-
Apache C++ Standard Library
– STDCXX, A collection of algorithms, containers, iterators, and other fundamental components. [retired] [Apache2] -
APR
– Apache Portable Runtime. Another library of cross-platform utility functions. [Apache2] -
ASL
– Adobe Source Libraries provides peer-reviewed and portable C++ source libraries. [MIT] -
Boost
⚡️ – A large collection of generic C++ libraries. [Boost]
website
-
BDE
– The BDE Development Environment from Bloomberg Labs. [Apache2] -
Cinder
– A community-developed, free and open source library for professional-quality creative coding. [BSD] -
Cxxomfort
– A small, header-only library that backports to C++03 some of the nifty C++11 goodies. [MIT] -
Dlib
⚡️ – A general purpose cross-platform C++ library designed using contract programming and modern C++ techniques. [Boost] -
EASTL
– Electronic Arts Standard Template Library. [BSD] -
ffead-cpp
– Framework for Enterprise Application Development. [Apache2] -
Folly
– An open-source C++ library developed and used at Facebook. [Apache2] -
JUCE
– An all-encompassing C++ class library for developing cross-platform software. [Core-Module: ISC, Rest: GPL2/GPL3/Commercial]
website
-
libPhenom
– libPhenom is an eventing framework for building high performance and high scalability systems in C. [Apache2] -
LibSourcey
– C++11 evented IO for real-time video streaming and high performance networking applications. [LGPL] -
LibU
– A multiplatform utility library written in C. [BSD] -
Loki
– A C++ library of designs, containing flexible implementations of common design patterns and idioms. [MIT] -
MiLi
– Minimal headers-only C++ Library. [Boost] -
OpenFrameworks
– A cross platform open source toolkit for creative coding in C++. [MIT]
website
-
Qt
⚡️ – A cross-platform application and UI framework. [GPL/LGPL/Commercial] -
Reason
– A cross platform framework designed to bring the ease of use of Java, .Net, or Python to developers who require the performance and strength of C++. [GPL2] -
ROOT
– A set of OO frameworks with all the functionality needed to handle and analyze large amounts of data in a very efficient way. Used at CERN. [LGPL] -
STLport
– An exemplary version of STL. [Free] -
STXXL
– Standard Template Library for Extra Large Data Sets. [Boost] -
Ultimate++
– A C++ cross-platform rapid application development framework. [BSD] -
uSTL
– The small STL library. [MIT] -
Windows Template Library
– A C++ library for developing Windows applications and UI components. [Public] -
Yomm11
– Open multi-methods for C++11. [Boost]
Artificial Intelligence
-
ANNetGPGPU
– A GPU (CUDA) based Artificial Neural Network library. [LGPL] -
btsk
– Game Behavior Tree Starter Kit. [zlib] -
Evolving Objects
– A template-based, ANSI-C++ evolutionary computation library which helps you to write your own stochastic optimization algorithms insanely fast. [LGPL] -
Recast/Detour
– (3D) Navigation mesh generator and pathfinder, mostly for games. [zlib] -
TensorFlow
– An open source software library for numerical computation using data flow graphs [Apache] -
tiny-cnn
– A header only, dependency-free deep learning framework in C++11. [BSD] -
Veles
– Distributed platform for rapid Deep learning application development. [Apache]
Asynchronous Event Loop
-
Boost.Asio
– A cross-platform C++ library for network and low-level I/O programming. [Boost] -
libev
– A full-featured and high-performance event loop that is loosely modelled after libevent, but without its limitations and bugs. [BSD and GPL] -
libevent
– An event notification library. [BSD] -
libuv
– Cross-platform asychronous I/O. [BSD]
Audio
Audio, Sound, Music, Digitized Voice Libraries
-
FMOD
– An easy to use crossplatform audio engine and audio content creation tool for games. [Free for non-commercial/Commercial] -
KFR
– Fast, modern C++ DSP framework, FFT, FIR/IIR filters, Sample Rate Conversion. [GPL/Commercial] -
Maximilian
– C++ Audio and Music DSP Library. [MIT] -
OpenAL
– Open Audio Library – A crossplatform audio API. [BSD/LGPL/Commercial] -
Opus
– A totally open, royalty-free, highly versatile audio codec. [BSD] -
SELA
– SimplE Lossless Audio. [MIT] -
Speex
– A free codec for free speech. Obsoleted by Opus. [BSD] -
Tonic
– Easy and efficient audio synthesis in C++. [Unlicense] -
Vorbis
– Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free, general-purpose compressed audio format. [BSD]
Biology
Bioinformatics, Genomics, Biotech
-
libsequence
– A C++ library for representing and analyzing population genetics data. [GPL] -
SeqAn
– Algorithms and data structures for the analysis of sequences with the focus on biological data. [BSD/3-clause] -
Vcflib
– A C++ library for parsing and manipulating VCF files. [MIT] -
Wham
– Structural variants (SVs) in Genomes by directly applying association tests to BAM files. [MIT]
BitTorrent
-
jech/dht
– BitTorrent DHT library in C. [MIT] -
libtorrent
(a.k.a. libtorrent-rasterbar) – An efficient feature complete C++ bittorrent implementation. [BSD] -
LibTorrent
(a.k.a. libtorrent-rakshasa) – BitTorrent library. [GPL] -
libutp
– uTorrent Transport Protocol library. [MIT]
CLI
Console/Terminal User Interface, Command Line Interface
-
Boost.Program_options
– A library to obtain program options via conventional methods such as command line and config file. [Boost] -
docopt.cpp
– A library to generate option parser from docstring. [MIT/Boost] -
gflags
– Commandline flags module for C++. [BSD] -
Ncurses
– A terminal user interfaces. [MIT] -
termbox
– A C library for writing text-based user interfaces. [BSD]
Compression
Compression and Archiving Libraries
-
Brotli
– Brotli compression format. Developed by Google. [MIT] -
bzip2
– A freely available, patent free, high-quality data compressor. [BSD] -
FiniteStateEntropy
– New generation entropy codecs : Finite State Entropy and Huff0. -
PhysicsFS
– A library to provide abstract access to various archives. It is intended for use in video games, and the design was somewhat inspired by Quake 3’s file subsystem. [zlib] -
KArchive
– A library for creating, reading, writing and manipulating file archives like zip and tar. It also provides transparent compression and decompression of data, using formats like gzip, via a subclass of QIODevice. [LGPL] -
LZ4
– Extremely Fast Compression algorithm. [BSD] -
LZFSE
– LZFSE compression library and command line tool. Developed by Apple. -
LZHAM
– Lossless data compression library with a compression ratio similar to LZMA but with much faster decompression. [BSD] -
LZMA
⚡️ – The default and general compression method of 7z format. [PublicDomain] -
LZMAT
– An extremely fast real-time lossless data compression library. [GPL] -
miniz
– Single C source file Deflate/Inflate compression library with zlib-compatible API, ZIP archive reading/writing, PNG writing. [Unlicense] -
Minizip
– Zlib with latest bug fixes that supports PKWARE disk spanning, AES encryption, and IO buffering. [zlib] -
smaz
– Small strings compression library. [BSD] -
Snappy
– A fast compressor/decompressor. [BSD] -
ZLib
– A very compact compression library for data streams. [zlib] -
zlib-ng
– zlib for the “next generation” systems. Drop-In replacement with some serious optimizations. [zlib] -
zstd
– Zstandard – Fast real-time compression algorithm. Developed by Facebook. [BSD] -
ZZIPlib
– Provides read access on ZIP-archives. [MPL/LGPL]
Concurrency
Concurrency and Multithreading
-
ArrayFire
– A general purpose GPU library. [BSD] -
Boost.Compute
– A C++ GPU Computing Library for OpenCL. [Boost] -
Bolt
– A C++ template library optimized for GPUs. [Apache2] -
ck
– Concurrency primitives, safe memory reclamation mechanisms and non-blocking data structures. [BSD] -
CUB
– CUB provides state-of-the-art, reusable software components for every layer of the CUDA programming mode. [New BSD] -
C++React
– A reactive programming library for C++11. [Boost] -
Intel TBB
– Intel® Threading Building Blocks. [GPL2 with runtime exception] -
junction
– A library of concurrent data structures in C++. [BSD] -
libcds
– A C++ library of Concurrent Data Structures. [BSD] -
Libclsph
– An OpenCL based GPU accelerated SPH fluid simulation library. [MIT] -
moderngpu
– moderngpu is a productivity library for general-purpose computing on GPUs. It is a header-only C++ library written for CUDA. The unique value of the library is in its accelerated primitives for solving irregularly parallel problems. [FreeBSD & Copyright, Sean Baxter] -
NCCL
– Optimized primitives for collective multi-GPU communication. [BSD] -
OpenCL
– The open standard for parallel programming of heterogeneous systems. -
OpenMP
– The OpenMP API. -
RaftLib
– The RaftLib C++ library, streaming/dataflow concurrency via C++ iostream-like operators [Apache2] -
Thrust
– A parallel algorithms library which resembles the C++ Standard Template Library (STL). [Apache2] -
HPX
– A general purpose C++ runtime system for parallel and distributed applications of any scale. [Boost] -
VexCL
– A C++ vector expression template library for OpenCL/CUDA. [MIT]
Containers
-
C++ B-tree
– A template library that implements ordered in-memory containers based on a B-tree data structure. [Apache2] -
Hashmaps
– Implementation of open addressing hash table algorithms in C++. [MIT] -
LSHBOX
– A c++ toolbox of locality-sensitive hashing (LSH), provides several popular LSH algorithms, also support Python and MATLAB. [GPL]
Cryptography
Cryptography and Encryption Libraries
-
Bcrypt
– A cross platform file encryption utility. Encrypted files are portable across all supported operating systems and processors. -
BeeCrypt
-
Botan
– A crypto library for C++. [BSD-2] -
Crypto++
– A free C++ class library of cryptographic schemes. [Boost] -
GnuPG
– A complete and free implementation of the OpenPGP standard. [GPL] -
GnuTLS
– A secure communications library implementing the SSL, TLS and DTLS protocols. [LGPL2.1] -
Libgcrypt
-
libmcrypt
-
LibreSSL
– A free version of the SSL/TLS protocol forked from OpenSSL in 2014. [?] -
libsodium
– P(ortable|ackageable) NaCl-based crypto library, opinionated and easy to use. [ISC] -
LibTomCrypt
– A fairly comprehensive, modular and portable cryptographic toolkit. [WTFPL] -
mbedTLS
– An open source, portable, easy to use, readable and flexible SSL library, previously known as PolarSSL. [Apache2]
website
-
Nettle
– A low-level cryptographic library. [LGPL] -
OpenSSL
– A robust, commercial-grade, full-featured, and Open Source cryptography library. [Apache]
websire
-
retter
– A collection of hash functions, ciphers, tools, libraries, and materials related to cryptography. -
s2n
– An implementation of the TLS/SSL protocols. [Apache] -
Tiny AES128 in C
– A small and portable implementation of the AES128 ECB encryption algorithm implemented in C. [PublicDomain]
Database
Database Libraries, SQL Servers, ODBC Drivers, and Tools
-
hiberlite
– C++ Object-relational mapping for sqlite3. [BSD] -
Hiredis
– A minimalistic C client library for the Redis database. [BSD] -
LevelDB
– A fast key-value storage library written at Google that provides an ordered mapping from string keys to string values. [BSD] -
LMDB
– Very fast embedded key/value store with full ACID semantics. [OpenLDAP] -
LMDB++
– C++11 wrapper for the LMDB embedded database library. [PublicDomain] -
MongoDB C Driver
– MongoDB client library for C. [Apache2] -
MongoDB C++ Driver
– C++ driver for MongoDB. [Apache2] -
MongoDB Libbson
– A BSON utility library. [Apache2] -
MySQL++
– A C++ wrapper for MySQL’s C API. [LGPL] -
redis3m
– Wrapper of hiredis with clean C++ interface, supporting sentinel and ready to use patterns. [Apache2] -
RocksDB
– Embedded key-value store for fast storage from facebook. [BSD] -
SQLite
– A completely embedded, full-featured relational database in a few 100k that you can include right into your project. [PublicDomain] -
upscaledb
– An embedded “typed” key/value store with a built-in query interface. [GPLv3]
Debug
Debugging Libraries, Memory Leak and Resource Leak Detection, Unit Testing
-
benchmark
– Google provided small microbenchmark support library. [Apache2] -
Boost.Test
– Boost Test Library. [Boost] -
doctest
– The lightest feature rich C++ single header testing framework. [MIT] -
Catch
– A modern, C++-native, header-only, framework for unit-tests, TDD and BDD. [Boost] -
Celero
– C++ Benchmarking Framework. [Apache2] -
CUTE
– C++ Unit Testing Easier. [LGPL3] -
CMocka
– unit testing framework for C with support for mock objects. [Apache2] -
CppUnit
– C++ port of JUnit. [LGPL2] -
CTest
– The CMake test driver program. [BSD] -
Google Mock
– A library for writing and using C++ mock classes. [BSD] -
Google Test
– Google C++ Testing Framework. [BSD] -
ig-debugheap
– Multiplatform debug heap useful for tracking down memory errors. [BSD] -
libtap
– Write tests in C. [GPL2] -
MemTrack
– Tracking memory allocations in C++. -
microprofile
– Profiler with web-view for multiple platforms. [PublicDomain] -
MinUnit
– A minimal unit testing framework for C/C++ self-contained in a single header file. [MIT] -
Mockator
– Eclipse CDT plug-in for C++ Seams and Mock Objects. -
Remotery
– Single C File Profiler with Web Viewer. [Apache2] -
UnitTest++
– A lightweight unit testing framework for C++. [MIT/X Consortium license] -
VLD
– Visual Leak Detector. A free, robust, open-source memory leak detection system for Visual C++.
Game Engine
-
Allegro
– A cross-platform library mainly aimed for video games and multimedia programming. [zlib] -
Cocos2d-x
– A multi-platform framework for building 2d games, interactive books, demos and other graphical applications. [MIT] -
delta3d
– A robust simulation platform. [LGPL2] -
GamePlay
– A cross-platform native C++ game framework for creating 2D/3D mobile and desktop games. [Apache2] -
Godot
– A fully featured, open source, MIT licensed, game engine. [MIT] -
Grit
– Community project to build a free game engine for implementing open world 3D games. [MIT] -
Oxygine
– A cross-platform 2D C++ game engine. [MIT] -
Panda3D
– A game engine, a framework for 3D rendering and game development for Python and C++ programs. [Modified BSD]
website
-
Polycode
– A cross-platform framework for creative code in C++ (with Lua bindings). [MIT]
website
-
Torque2D
– An open-source and cross-platform C++ engine built for 2D game development. [MIT]
website
-
Torque3D
– An open-source C++ engine built for 3D game development. [MIT]
website
GUI
Graphic User Interface
-
CEGUI
– Flexible, cross-platform GUI library. -
FLTK
– Fast, light, cross-platform C++ GUI toolkit. [GPL2] -
GacUI
– GPU Accelerated C++ User Interface, with WYSIWYG developing tools, XML supports, built-in data binding and MVVM features. [Ms-PL] -
GTK+
– A multi-platform toolkit for creating graphical user interfaces. [LGPL] -
gtkmm
– The official C++ interface for the popular GUI library GTK+. [LGPL] -
imgui
– Immediate Mode Graphical User Interface with minimal dependencies. [MIT] -
libRocket
– libRocket is a C++ HTML/CSS game interface middleware. [MIT] -
MyGUI
– Fast, flexible and simple GUI. [MIT] -
QCustomPlot
– Qt plotting widget without further dependencies. [GPLv3] -
Qwt
– Qt Widgets for Technical Applications. [Own based on LGPL] -
QwtPlot3D
– A feature-rich Qt/OpenGL-based C++ programming library, providing essentially a bunch of 3D-widgets. [zlib] -
PDCurses
– Public domain curses library with both source code and pre-compiled library available. [PublicDomain] -
Sciter
– Sciter is an embeddable HTML/CSS/scripting engine aimed to be used as an UI layer of modern desktop applications. [Free/Commercial] -
wxWidgets
– A C++ library that lets developers create applications for Windows, Mac OS X, Linux and other platforms with a single code base. [Own LGPL]
Graphics
-
bgfx
– A cross-platform rendering library. [BSD] -
Cairo
– A 2D graphics library with support for multiple output devices. [LGPL2 or Mozilla MPL] -
GLFW
– A simple, cross-platform OpenGL wrangling library. [zlib/libpng] -
Horde3D
– A small 3D rendering and animation engine. [EPL] -
Irrlicht
– A high performance realtime 3D engine written in C++. [zlib] -
magnum
– C++11 and OpenGL 2D/3D graphics engine. [MIT]
website
-
Ogre 3D
⚡️ – A scene-oriented, real-time, flexible 3D rendering engine (as opposed to a game engine) written in C++. [MIT] -
OpenSceneGraph
– An open source high performance 3D graphics toolkit. [OSGPL] -
OpenSubdiv
– Pixar’s library for evaluating and rendering subdivision surfaces on CPU and GPU. [Modified Apache2] -
OpenVDB
– Library and tools for storing, editing, and rendering volumetric datasets. [MPL2] -
Panda3D
– A framework for 3D rendering and game development for Python and C++. [BSD] -
Partio
– Library for wrangling particle data, with support for most common file formats. [Modified BSD] -
Skia
– A complete 2D graphic library for drawing Text, Geometries, and Images. [BSD]
webpage
-
urho3d
– Cross-platform rendering and game engine. [Many different, mostly MIT]
Image Processing
-
Boost.GIL
– Generic Image Library. -
CImg
– A small, open source, C++ toolkit for image processing. [Own LGPL or GPL] -
CxImage
– An image processing and conversion library to load, save, display, transform BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K images. [zlib] -
FreeImage
– An open source library that supports popular graphics image formats and others as needed by today’s multimedia applications. [GPL2 or GPL3] -
GD
– GD Graphics Library, famously used in PHP for image loading/manipulation & thumbnail generation. [custom permissive license, requires mention in user docs]
website
-
GDCM
– Grassroots DICOM library. -
ITK
– An open-source, cross-platform system for image analysis. [Apache2 from ITK 4.0] -
libvips
– A fast image processing library with low memory needs. [LGPL]
website
-
Magick++
– ImageMagick program interfaces for C++. [Apache2] -
MagickWnd
– ImageMagick program interfaces for C. [Apache2] -
OpenCV
⚡️ – Open source computer vision. [BSD] -
OpenEXR
– Cross-platform library for high dynamic range imaging. [Modified BSDF] -
OpenImageIO
– Powerful image and texture wrangling library with support for a wide number of common lossy and RAW formats. [Modified BSD] -
tesseract-ocr
– An OCR engine. [Apache2] -
Video++
– A C++14 high performance video and image processing library. [MIT] -
VIGRA
– A generic C++ computer vision library for image analysis. [MIT X11] -
VTK
– Open-source, freely available software system for 3D computer graphics, image processing and visualization. [BSD]
Internationalization
-
gettext
– GNU `gettext’. [GPL2] -
IBM ICU
– A set of C/C++ and Java libraries providing Unicode and Globalization support. [ICU] -
libiconv
– An encoding conversion library between different character encodings. [GPL]
Inter-process communication
-
Apache Thrift
– Efficient cross-language IPC/RPC, works between C++, Java, Python, PHP, C#, and many more other languages. Originally developed by Facebook. [Apache2] -
Cap’n Proto
– Fast data interchange format and capability-based RPC system. [MIT] -
gRPC
– A high performance, open source, general-purpose RPC framework. [BSD]
website
-
libjson-rpc-cpp
– JSON-RPC framework for C++ servers and clients. [MIT] -
nanomsg
– A simple high-performance implementation of several “scalability protocols”. [MIT]
website
-
simple-rpc-cpp
– A simple RPC wrapper generator to C/C++ functions. [BSD] -
WAMP
– Provides RPC and pub/sub messaging patterns. (various implementations, various languages) -
xmlrpc-c
– A lightweight RPC library based on XML and HTTP. [BSD] -
ZeroMQ
– High-speed, modular asynchronous communication library. [LGPL]
JSON
-
Boost.PropertyTree
– A property tree parser/generator that can be used to parse XML/JSON/INI/Info files. [Boost] -
frozen
– JSON parser and generator for C/C++. [GPL & GPL2] -
Jansson
– C library for encoding, decoding and manipulating JSON data. [MIT] -
jbson
– jbson is a library for building & iterating BSON data, and JSON documents in C++14. [Boost] -
JeayeSON
– A very sane (header only) C++ JSON library. [BSD] -
json
⚡️ – JSON for Modern C++. [MIT] -
JSON++
– A JSON parser in C++. [MIT] -
JsonCpp
– A C++ library for interacting with JSON. [MIT] -
json-parser
– Very low footprint JSON parser written in portable ANSI C. [BSD] -
json11
– A tiny JSON library for C++11. [MIT] -
json-voorhees
– JSON library for C++. Support for C++11. No dependencies, fast and dev-friendly. [Apache2] -
jute
– Very simple C++ JSON Parser. [PublicDomain] -
libjson
– A JSON parser and printer library in C. easy to integrate with any model. [LGPL] -
libjson
– Lightweight JSON library. [?] -
LIBUCL
⚡️ – Universal configuration library parser [?] -
PicoJSON
– A header-file-only, JSON parser serializer in C++. [BSD] -
qt-json
– A simple class for parsing JSON data into a QVariant hierarchy and vice versa. [GPLv3] -
QJson
– A qt-based library that maps JSON data to QVariant objects. [LGPL2] -
RapidJSON
⚡️ – A fast JSON parser/generator for C++ with both SAX/DOM style API. [MIT] -
ujson
– µjson is a a small, C++11, UTF-8, JSON library. [MIT] -
YAJL
– A fast streaming JSON parsing library in C. [ISC]
Logging
-
Blackhole
– Header only attribute-based logging framework, which is designed to be fast, modular and highly customizable. [MIT] -
Boost.Log
– Designed to be very modular and extensible. [Boost] -
easyloggingpp
– Single header only C++ logging library. [MIT]
website
-
G3log
– Asynchronous logger with Dynamic Sinks. [PublicDomain] -
Log4cpp
– A library of C++ classes for flexible logging to files, syslog, IDSA and other destinations. [LGPL] -
log4cplus
– A simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. [BSD & Apache2] -
plog
– Portable and simple C++ logging library. [MPL2] -
reckless
– Low-latency, high-throughput, asynchronous logging library for C++. [MIT] -
spdlog
– Super fast, header only, C++ logging library. -
templog
– A very small and lightweight C++ library which you can use to add logging to your C++ applications. [Boost]
Machine Learning
-
Caffe
– A fast framework for neural networks. [BSD] -
CCV
– C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library. [BSD] -
Fido
– A highly-modular C++ machine learning library for embedded electronics and robotics. [MIT]
website
-
MeTA
– A modern C++ data sciences toolkit. [MIT]
website
-
Minerva
– A fast and flexible system for deep learning. [Apache2] -
mlpack
– A scalable c++ machine learning library. [LGPLv3] -
OpenCV
⚡️ – Open Source Computer Vision Library. [BSD]
website
-
Recommender
– C library for product recommendations/suggestions using collaborative filtering (CF). [BSD] -
SHOGUN
– The Shogun Machine Learning Toolbox. [GPLv3] -
sofia-ml
– The suite of fast incremental algorithms for machine learning. [Apache2]
Math
-
Apophenia
– A C library for statistical and scientific computing [GPL2] -
Armadillo
– A high quality C++ linear algebra library, aiming towards a good balance between speed and ease of use. The syntax (API) is deliberately similar to Matlab. [MPL2] -
blaze
– high-performance C++ math library for dense and sparse arithmetic. [BSD] -
Boost.Multiprecision
– provides higher-range/precision integer, rational and floating-point types in C++, header-only or with GMP/MPFR/LibTomMath backends. [Boost] -
ceres-solver
– C++ library for modeling and solving large complicated nonlinear least squares problems from google. [BSD] -
CGal
– Collection of efficient and reliable geometric algorithms. [LGPL&GPL] -
cml
– free C++ math library for games and graphics. [Boost] -
Eigen
– A high-level C++ library of template headers for linear algebra, matrix and vector operations, numerical solvers and related algorithms. [MPL2] -
ExprTK
– The C++ Mathematical Expression Toolkit Library (ExprTk) is a simple to use, easy to integrate and extremely efficient run-time mathematical expression parser and evaluation engine. [CPL] -
GLM
– Header-only C++ math library that matches and inter-operates with OpenGL’s GLSL math. [MIT] -
GMTL
– Graphics Math Template Library is a collection of tools implementing Graphics primitives in generalized ways. [GPL2] -
GMP
– A C/C++ library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating-point numbers. [LGPL3 & GPL2] -
MIRACL
– A Multiprecision Integer and Rational Arithmetic Cryptographic Library. [AGPL] -
muparser
– muParser is an extensible high performance math expression parser library written in C++. [MIT] -
NT2
– A SIMD-optimized numerical template library that provides an interface with MATLAB-like syntax. [Boost] -
LibTomMath
– A free open source portable number theoretic multiple-precision integer library written entirely in C. [PublicDomain & WTFPL]
website
-
QuantLib
– A free/open-source library for quantitative finance. [Modified BSD]
website
-
Vc
– SIMD Vector Classes for C++. [BSD] -
Versor
– A (fast) Generic C++ library for Geometric Algebras, including Euclidean, Projective, Conformal, Spacetime (etc).
Multimedia
-
GStreamer
– A library for constructing graphs of media-handling components. [LGPL] -
LIVE555 Streaming Media
– Multimedia streaming library using open standard protocols (RTP/RTCP, RTSP, SIP). [LGPL] -
libVLC
– libVLC (VLC SDK) media framework. [GPL] -
QtAv
– A multimedia playback framework based on Qt and FFmpeg to write a player easily. [LGPL]
website
-
SDL
⚡️ – Simple DirectMedia Layer. [zlib] -
SFML
⚡️ – Simple and Fast Multimedia Library. [zlib]
website
Networking
-
ACE
– An OO Network Programming Toolkit in C++. [?MIT?] -
Boost.Asio
⚡️ – A cross-platform C++ library for network and low-level I/O programming. [Boost] -
C++ REST SDK
– C++ REST SDK (previously named Casablanca). [Apache2] -
Restbed
– C++11 Asynchronous RESTful framework. [AGPL] -
cpp-netlib
– A collection of open-source libraries for high level network programming. [Boost] -
cpr
– A modern C++ HTTP requests library with a simple but powerful interface. Modeled after the Python Requests module. [MIT]
website
-
Dyad.c
– Asynchronous networking for C. [MIT] -
libcurl
– Multiprotocol file transfer library. [MIT/X derivate license] -
libjingle
– Google talk voice and P2P interoperability library. [BSD] -
Mongoose
– Extremely lightweight webserver. [GPL2] -
Muduo
– A C++ non-blocking network library for multi-threaded server in Linux. [BSD] -
net_skeleton
– TCP client/server library for C/C++. [GPL2] -
nope.c
– A C language-based ultra-light software platform for scalable server-side and networking applications. Think node.js for C programmers. [GPL2] -
Onion
– HTTP server library in C designed to be lightweight and easy to use. [Apache2/GPL2] -
POCO
⚡️ – C++ class libraries and frameworks for building network- and internet-based applications that run on desktop, server, mobile and embedded systems. [Boost]
website
-
Proxygen
– Facebook’s collection of C++ HTTP libraries including an easy to use HTTP server. [BSD] -
RakNet
– A cross platform, open source, C++ networking engine for game programmers. [BSD] -
Silicon
– A high performance, middleware oriented C++14 http web framework. [MIT] -
Tufão
– An asynchronous web framework for C++ built on top of Qt. [LGPL2] -
WebSocket++
– C++/Boost Asio based websocket client/server library. [BSD]
Physics
Dynamics simulation engines
-
Box2D
– A 2D physics engine for games. [BSD-like] -
Bullet
– A 3D physics engine for games. [zlib]
website
-
Chipmunk
– A fast and lightweight 2D game physics library. [MIT]
website
-
LiquidFun
– A 2D physics engine for games. [BSD-like] -
Newton Dynamics
– An integrated solution for real time simulation of physics environments. [zlib] -
ODE
– Open Dynamics Engine – An open source, high performance library for simulating rigid body dynamics. [BSD&LGPL] -
ofxBox2d
– openFrameworks wrapper for Box2D. [BSD-like] -
Simbody
– High-performance C++ multibody dynamics/physics library for simulating articulated biomechanical and mechanical systems like vehicles, robots, and the human skeleton. [Apache2]
Robotics
-
MOOS-IvP
– A set of open source C++ modules for providing autonomy on robotic platforms, in particular autonomous marine vehicles. -
MRPT
– Mobile Robot Programming Toolkit. [BSD] -
PCL
– Point Cloud Library is a standalone, large scale, open project for 2D/3D image and point cloud processing [BSD]
website
-
Robotics Library (RL)
– A self-contained C++ library for robot kinematics, motion planning and control. [BSD] -
RobWork
– A collection of C++ libraries for simulation and control of robot systems. [Apache2] -
ROS
– Robot Operating System provides libraries and tools to help software developers create robot applications. [BSD]
Scientific Computing
-
FFTW
– A C library for computing the DFT in one or more dimensions. [GPL] -
GSL
– GNU scientific library. [GPL] -
Trilinos
– High performance PDE solvers. [BSD]
Scripting
-
ChaiScript
– An easy to use embedded scripting language for C++. [BSD]
website
-
Duktape
– An embeddable Javascript engine with compact footprint. [MIT]
website
-
Lua
– A minimal and fast scripting engine for configuration files and basic application scripting. [MIT] -
luacxx
– C++11 API for creating Lua bindings. [MIT] -
SWIG
– A wrapper/interface Generator that let you link your c++ code to Javascript, Perl, PHP, Python, Tcl and Ruby. [GPL/Output not licensed] -
V7
– An embedded JavaScript engine. [GPL2] -
V8
– A fast JavaScript engine by Google that can be embedded into any C++ application. [BSD] -
ChakraCore
-A JavaScript engine by Microsoft that can be embedded into nodejs. [MIT]
Serialization
-
cereal
– A C++11 library for serialization. [BSD] -
cppcodec
– Header-only C++11 library to encode/decode base64, base32 and hex with consistent, flexible API. [MIT] -
FlatBuffers
– A Memory efficient serialization library. [Apache2] -
MessagePack
– Efficient binary serialization format “like JSON” for C/C++. [Apache2]
website
-
protobuf
– Protocol Buffers – Google’s data interchange format. [BSD] -
protobuf-c
– Protocol Buffers implementation in C. [BSD] -
SimpleBinaryEncoding
– encoding and decoding application messages in binary format for low-latency applications. [Apache2]
Video
-
libvpx
– VP8/VP9 Codec SDK. [BSD] -
FFmpeg
– A complete, cross-platform solution to record, convert and stream audio and video. [LGPL2/GPL2] -
libde265
– Open h.265 video codec implementation. [LGPL]
website
-
OpenH264
– Open Source H.264 Codec. [BSD]
website
-
Theora
– A free and open video compression format. [BSD]
Virtual Machines
-
CarpVM
– “interesting” VM in C. Let’s see how this goes. [GPLv3] -
MicroPython
– Aims to put an implementation of Python 3.x on a microcontroller. [MIT] -
TinyVM
– A small, fast, lightweight virtual machine written in pure ANSI C. [MIT]
Web Application Framework
-
Civetweb
– Provides easy to use, powerful, C/C++ embeddable web server with optional CGI, SSL and Lua support. [MIT] -
CppCMS
– A Free High Performance Web Development Framework (not a CMS). [LGPLv3] -
Crow
– Crow is C++ micro web framework (inspired by Python Flask). [BSD] -
Kore
– ultra fast and flexible web server / framework for web applications developed in C. [ISC] -
libOnion
– lightweight library to help you create webservers in C programming language. [LGPLv3] -
QDjango
– A web framework written in C++ and built on top of the Qt library. Where possible it tries to follow django’s API, hence its name. [LGPL] -
TreeFrog Framework
– High-speed and full-stack web application framework based on C++ and Qt, which supports HTTP and WebSocket protocol (with O/R mapping). [BSD]
website
-
Wt
– A C++ library for developing web applications. [GPL/Commercial]
XML
XML is crap. Really. There are no excuses. XML is nasty to parse for humans, and it’s a disaster to parse even for computers. There’s just no reason for that horrible crap to exist. – Linus Torvalds
-
Boost.PropertyTree
– A property tree parser/generator that can be used to parse XML/JSON/INI/Info files. [Boost] -
Expat
– An XML parser library written in C. [MIT] -
Libxml2
– The XML C parser and toolkit of Gnome. [MIT] -
libxml++
– An XML Parser for C++. [LGPL2] -
PugiXML
– A light-weight, simple and fast XML parser for C++ with XPath support. [MIT] -
RapidXml
– An attempt to create the fastest XML parser possible, while retaining useability, portability and reasonable W3C compatibility. [Boost] -
TinyXML
– A simple, small, minimal, C++ XML parser that can be easily integrating into other programs. [zlib] -
TinyXML2
– A simple, small, efficient, C++ XML parser that can be easily integrating into other programs. [zlib] -
TinyXML++
– A completely new interface to TinyXML that uses MANY of the C++ strengths. Templates, exceptions, and much better error handling. [MIT] -
Xerces-C++
– A validating XML parser written in a portable subset of C++. [Apache2]
Miscellaneous
Useful libraries or tools that don’t fit in the categories above or maybe just not categorised yet
-
access_profiler
– A tool to count accesses to member variables in c++ programs. [GPL3] -
American fuzzy lop
a.k.a. afl-fuzz – Crazy fuzzing tool that automatically discovers bugs given time and minimal example input. [Apache2] -
Better Enums
– Reflective enums (to string, iteration). Single header. [BSD]
website
-
Better String
– An alternative to the string library for C which is more functional and does not have buffer overflow overrun problems. Also includes a C++ wrapper. [BSD, GPL2] -
Boost.Signals
– An implementation of a managed signals and slots system. [Boost] -
C++ Format
– Small, safe and fast formatting library for C++. [BSD] -
FastFormat
– Fast, Safe C++ Formatting inspired by log4j and Pantheios [Simplified BSD] -
casacore
– A set of c++ core libraries derived from aips++. [LGPL] -
CppVerbalExpressions
– C++ regular expressions made easy. [MIT] -
QtVerbalExpressions
– This Qt lib is based off of the C++ VerbalExpressions library. [MIT] -
c-smart-pointers
– Smart pointers for the (GNU) C programming language. [MIT] -
cxx-prettyprint
– A pretty printing library for C++ containers. [Boost] -
DynaPDF
– An easy-to-use PDF generation library. [Commercial] -
gcc-poison
– A simple header file for developers to ban unsafe C/C++ functions from applications. -
HTTP Parser
⚡️ – A http request/response parser for C. [MIT] -
Klib
– Small and lightweight implementations of common algorithms and data structures. [MIT] -
libsigc++
– A typesafe callback system for standard C++. [LGPL] -
libcpuid
– A small C library for x86 CPU detection and feature extraction. [BSD] -
libevil
– The Evil License Manager. [GPLv3] -
libnih
– A lightweight library of C functions and structures. [GPL2.1] -
libusb
– A universal USB library which allows for portable access to USB devices. [LGPL2] -
Mach7
– A Pattern-matching library for C++. [BSD] -
PCRE
– A regular expression C library inspired by the regular expression capabilities in Perl. [BSD] -
RE2
– A software library for regular expressions via a finite-state machine using automata theory. -
PHP-CPP
– A library to build PHP extensions with C++. [Apache2]
website
-
Remote Call Framework
– Inter-process communication framework for C++. [GPL2/Commercial] -
Scintilla
– A free source code editing component. [MIT] -
SDS
– Simple Dynamic Strings library for C. [BSD] -
semver.c
– A semver parser and render in ANSI C. [MIT] -
Serial Communication Library
– Cross-platform, Serial Port library written in C++. [MIT] -
sigslot
– C++ Signal/Slot Library. [PublicDomain] -
SLDR
– Super Light DNS Resolver. [GPL2/Commercial] -
SLRE
– Super Light Regexp engine for C/C++. [GPL2/Commercial] -
Stage
– Mobile robot simulator. [GPL2] -
stb
– A range of single-file libraries for C/C++. [PublicDomain] -
ub-canaries
– A collection of C/C++ programs that try to get compilers to exploit undefined behavior. -
VarTypes
– A feature-rich, object-oriented framework for managing variables in C++ / Qt4. [LGPL] -
ZBar
– A barcode scanner library, which allows to scan photos/images/video streams for barcodes and return their value. [LGPL2] -
ZXing
– An open-source, multi-format 1D/2D barcode image processing library implemented in Java, with ports to other languages. [Apache]
Software
Software for creating a development environment.
Compiler
List of C/C++ compilers
-
8cc
– A Small C Compiler. -
c
– Compile and execute C “scripts” in one go! [MIT] -
Clang
– A C compiler for LLVM. Supports C++11/14/1z C11. Developed by LLVM Team. [NCSA] -
GCC
– GNU Compiler Collection. Supports C++11/14/1z C11 and OpenMP. [GNU GPL3] -
PCC
– A very old C compiler. Supports C99. -
Intel C++ Compiler
– Developed by Intel. -
LLVM
– Collection of modular and reusable compiler and toolchain technologies. -
Microsoft Visual C++
– MSVC, developed by Microsoft. -
Open WatCom
– Watcom C, C++, and Fortran cross compilers and tools. [Sybase Open Watcom Public License] -
Oracle Solaris Studio
– C, C++ and Fortran compiler for SPARC and x86. Supports C++11. Available on Linux and Solaris. [OTN Developer License] -
TCC
– Tiny C Compiler. [LGPL]
Online Compiler
List of online C/C++ compilers
-
codepad
– An online compiler/interpreter, and a simple collaboration tool. -
CodeTwist
– A simple online compiler/interpreter, where you can paste your C, C++ or Java code and execute it online and see results. -
coliru
– Online compiler/shell with support for various C++ compilers. -
Compiler Explorer
– An interactive compiler with assembly output available. -
CompileOnline
– Compile and Execute C++ online on Linux. -
Ideone
– An online compiler and debugging tool which allows you to compile source code and execute it online in more than 60 programming languages. -
Rextester
– Online compiler which provides several compilers(Clang, GCC, MSVC) and several editors. -
Rise4Fun
– Online Visual C++ compiler. -
Wandbox
– An online Clang/GCC compiler with Boost available.
Debugger
List of C/C++ debuggers
-
Comparison of debuggers
– A list of Debuggers from Wikipedia. -
GDB
– GNU Debugger. -
LLDB
– The LLDB Debugger. -
Metashell
– An interactive template metaprogramming shell which includes the MDB metadebugger. -
Valgrind
– A tool for memory debugging, memory leak detection, and profiling. -
x64_dbg
– An open-source x64/x32 debugger for windows.
Integrated Development Environment
List of C/C++ nominal IDEs.
-
Anjuta DevStudio
– The GNOME IDE. [GPL3] -
AppCode
– an IDE for Objective-C, C, C++, and JavaScript development built on JetBrains’ IntelliJ IDEA platform. -
Cevelop
– Cross-platform C/C++ IDE based on Eclipse CDT with additional plug-ins. -
CLion
– Cross-platform C/C++ IDE from JetBrains. -
Code::Blocks
– A free C, C++ and Fortran IDE. -
CodeLite
– Another cross-plaform, free C/C++ IDE. [GPL2 with an exception for plugins] -
color_coded
– A vim plugin for libclang-based highlighting. [MIT] -
Dev-C++
– A portable C/C++/C++11 IDE. -
Eclipse CDT
– A fully functional C and C++ IDE based on the Eclipse platform. -
Geany
– Small, fast, cross-platform IDE. [GPL] -
IBM VisualAge
– A family of computer integrated development environments from IBM. -
Irony-mode
– A C/C++ minor mode for Emacs powered by libclang. -
juCi++
– Cross-platform, lightweight C++ IDE with libclang integration. [MIT] -
KDevelop
– A free, open source IDE. -
Microsoft Visual Studio
– An IDE from Microsoft. -
NetBeans
– An IDE for developing primarily with Java, but also with other languages, in particular PHP, C/C++, and HTML5. -
Qt Creator
⚡️ – A cross-platform C++, JavaScript and QML IDE which is part of the SDK for Qt. -
rtags
– A c/c++ client/server indexer with for integration with emacs based on clang. -
Xcode
– Developed by Apple. -
YouCompleteMe
– YouCompleteMe is a fast, as-you-type, fuzzy-search code completion engine for Vim.
Build Systems
-
Bear
– A tool to generate compilation database for clang tooling. -
CMake
– Cross-platform free and open-source software for managing the build process of software using a compiler-independent method. [BSD] -
C++ Archive Network
– Cross-platform C++ Dependency Manager with a lot of packages available. -
Conan
– C/C++ Package Manager, open sourced. [MIT] -
CPM
– A C++ Package Manager based on CMake and Git. -
FASTBuild
– High performance, open-source build system supporting highly scalable compilation, caching and network distribution. -
MesonBuild
– An open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible. -
Ninja
– A small build system with a focus on speed. -
Scons
– A software construction tool configured with a Python script. -
Sconsolidator
– Scons build system integration for Eclipse CDT. -
tundra
– High-performance code build system designed to give the best possible incremental build times even for very large software projects. -
tup
– File-based build system that monitors in the background for changed files. -
Premake
– A tool configured with a Lua script to generate project files for Visual Studio, GNU Make, Xcode, Code::Blocks, and more across Windows, Mac OS X, and Linux.
Static Code Analysis
List of tools for improving quality and reducing defects by code analysis
-
Cppcheck
– A tool for static C/C++ code analysis. –
source
-
include-what-you-use
– A tool for use with clang to analyze includes in C and C++ source files. -
OCLint
– A static source code analysis tool to improve quality and reduce defects for C, C++ and Objective-C. –
source
-
Clang Static Analyzer
– A source code analysis tool that finds bugs in C, C++, and Objective-C programs. -
Linticator
– Eclipse CDT integration of Pc-/FlexeLint. -
List of tools for static code analysis
– A list of tools for static code analysis from Wikipedia.
Coding Style Tools
-
ClangFormat
– A tool to format C/C++/Obj-C code. -
Clang-Tidy
– Clang-based C++ linter tool. -
Uncrustify
– Code beautifier.
Resources
Various resources, such as books, websites, and articles for improving your C++ development skills and knowledge.
API Design
Articles
Fantastic C/C++ related articles.
-
CppCon 2016 Presentation Materials
– CppCon 2016 Presentation Materials. -
CppCon 2015 Presentation Materials
– CppCon 2015 Presentation Materials. -
CppCon 2014 Presentation Materials
– CppCon 2014 Presentation Materials. -
C++Now 2016 Presentations
– Presentation materials for C++Now 2016. -
C++Now 2015 Presentations
– Presentation materials presented at C++Now 2015. -
C++Now 2014 Presentations
– Presentation materials presented at C++Now 2014. -
C++Now 2013 Presentations
– Presentation materials presented at C++Now 2013. -
C++Now 2012 Presentations
– Presentation materials presented at C++Now 2012.
Books
Fantastic C/C++ related books.
-
List of Free C/C++ Books
-
Free C Books
– vhf/free-programming-books/C. -
Free C++ Books
– vhf/free-programming-books/C++. -
cppbestpractices
– Collaborative Collection of C++ Best Practices.
Coding Style
-
C++ Core Guidelines
– “Official” set of C++ guidelines, reviewed by the author of C++. -
C++ Dos and Don’ts
– The Chromium Projects > For Developers > Coding Style > C++ Dos and Don’ts. -
google-styleguide
– Style guides for Google-originated open-source projects. -
Google C++ Style Guide
-
GNU Coding Standard
-
Linux kernel coding style
-
LLVM Coding Standards
Talks
-
CppCon Talks
⚡️ – The C++ conference. -
Quick game development with C++11/C++14
– CppCon 2014 talk by Vittorio Romeo. -
Presentation on Hana for C++Now 2015
Videos
Fantastic C/C++ related videos.
-
List of C/C++ YouTube Videos
-
Awesome C Programming Tutorials in Hi Def [HD]
– A collection of detailed C Programming Language Tutorials for Beginners and New Programmers. -
C++
– by VoidRealms. -
C++ Qt Programming
– by VoidRealms. -
C++ Programming Tutorials Playlist
– TheNewBoston Official Buckys C++ Programming Tutorials Playlist. -
C++ Programming Tutorials from thenewboston
– These are all of thenewboston’s C++ programming tutorials. -
C++ GUI with Qt Playlist
– Official Playlist for thenewboston C++ GUI with Qt tutorials. -
C Programming Tutorials
– All of TheNewBoston’s C programming tutorials are right here. -
Bo Qian’s playlist
– Boost Library, C++ Standard Library, Modern C++, Advanced C++, Advanced STL, …
Websites
Useful C/C++ related websites.
-
Standard C++
⚡️ – News, Status & Discussion about Standard C++. -
CppCon
– The C++ Conference. -
C++ reference
– C++98, C++03, C++11, C++14 reference. -
cplusplus.com
– The C++ Resources Network. -
C FAQ
– C frequently asked questions. -
C++ FAQ
– C++ frequently asked questions. -
C++ FQA Lite
– C++ frequently questioned answers. -
Guru of the Week
– A regular series of C++ programming problems created and written by Herb Sutter. -
Meeting C++
-
C++ Quiz
– C++ quiz in which you propose to find errors in code fragments of open source projects. -
Udemy C++ Courses and Tutorials
-
C++ Hints
– Every business day hints about most often C/C++ mistakes and ways to solve them from PVS-Studio Team.
Weblogs
Useful C/C++ related weblogs.
-
Coding For Speed
– Coding For Speed DOT COM, Less Execution Time. -
Eric Niebler
-
Sticky Bits
-
Paul Fultz II’s Blog
-
ridiculousfish
– Will It Optimize? -
Embedded in Academia
Other Awesome Projects
Collection of useful codes, snippets, …
-
algorithms
– Algorithms & Data Structures in C++. -
c-algorithms
– C algorithms library. -
C/C++ Awesome Pack
– Contains some awesome c++ codes, packed in one.
Other Awesome Lists
Other amazingly awesome lists
-
lists
– List of (awesome) lists curated on GitHub. -
awesome-awesomeness
– A curated list of awesome awesomeness. -
awesome
– A curated list of awesome lists. -
Awesome C/C++
– getAwesomeness()’s mirror. -
Awesome C/C++
– LibHunt’s mirror. -
Awesome C
1 -
Awesome C
2 -
free-programming-books
– List of Freely Available Programming Books. -
Inqlude
– The Qt library archive. -
papers-we-love
– Papers from the computer science community to read and discuss. -
awesome-algorithms
– A curated list of awesome places to learn and/or practice algorithms. -
awesome-talks
– A lot of screencasts, recordings of user group gatherings and conference talks. -
Projects
– A list of practical projects that anyone can solve in any programming language. -
Awesome interview questions
– A list of lists of interview questions for the most popular technologies, including C/C++.
Contributing
Please see
CONTRIBUTING
for details.