Skip to content

A curated list of awesome C/C++ frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.

License

Notifications You must be signed in to change notification settings

iOSExpertise/awesome-cpp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Awesome C/C++

A curated list of awesome C/C++ frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.

Standard Libraries

C++ Standard Library - including STL Containers, STL Aglorithm, STL Functional, etc.

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 - Tiny crypto suite aimed at embedded development, previously known as PolarSSL. [Apache2]
  • 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. [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]
  • 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]
  • 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
  • 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.
  • Biicode - Simple, file-based dependency manager.
  • CMake - Cross-platform free and open-source software for managing the build process of software using a compiler-independent method. [BSD]
  • 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

Coding Style Tools

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.

Books

Fantastic C/C++ related books.

Coding Style

Talks

Videos

Fantastic C/C++ related videos.

Websites

Useful C/C++ related websites.

Weblogs

Useful C/C++ related weblogs.

Other Awesome Projects

Collection of useful codes, snippets, ...

Other Awesome Lists

Other amazingly awesome lists

Contributing

Please see CONTRIBUTING for details.

About

A curated list of awesome C/C++ frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published