awesome-cpp
A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things.
https://github.com/DanylovskyiAM/awesome-cpp
Last synced: 17 days ago
JSON representation
-
Database
- RocksDB - Embedded key-value store for fast storage from facebook. [BSD]
- SimDB - High performance, shared memory, lock free, cross platform, single file, minimal dependencies, C++11 key-value store [Apache2]
- SQLiteC++ - SQLiteC++ (SQLiteCpp) is a smart and easy to use C++ SQLite3 wrapper. [MIT]
- sqlite_modern_cpp - Header only C++14 wrapper around sqlite library. [MIT]
- sqlite_orm - SQLite ORM light header only library for modern C++. [BSD-3-Clause]
- sqlpp11 - A type safe embedded domain specific language for SQL queries and results in C++. [BSD-2-Clause]
- TileDB - Fast Dense and Sparse Multidimensional Array DBMS. [MIT] [website](https://tiledb.io/)
- LMDB++ - C++11 wrapper for the LMDB embedded database library. [PublicDomain]
-
Debug
- CMocka - unit testing framework for C with support for mock objects. [Apache2]
- CTest - The CMake test driver program. [BSD]
- MemTrack - Tracking memory allocations in C++.
- microprofile - Profiler with web-view for multiple platforms. [PublicDomain]
- Mockator - Eclipse CDT plug-in for C++ Seams and Mock Objects.
- VLD - Visual Leak Detector. A free, robust, open-source memory leak detection system for Visual C++.
- backward-cpp - A beautiful stack trace pretty printer for C++. [MIT]
- benchmark - Google provided small microbenchmark support library. [Apache2]
- Catch - A modern, C++-native, header-only, framework for unit-tests, TDD and BDD. [Boost]
- Catch2 - A modern, C++-native, header-only, test framework for unit-tests, TDD and BDD. [BSL-1.0]
- Celero - C++ Benchmarking Framework. [Apache2]
- CppUTest - Unit testing and mocking framework for C/C++. [BSD-3-clause]
- fff - A micro-framework for creating fake C functions. [MIT]
- 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++.
- MinUnit - A minimal unit testing framework for C self-contained in a single header file. [MIT]
- Nanotimer - A simple low-overhead cross-platform timer class for benchmarking. [zLib] [website](http://www.plflib.org/nanotimer.htm)
- Remotery - Single C File Profiler with Web Viewer. [Apache2]
- UnitTest++ - A lightweight unit testing framework for C++. [MIT/X Consortium license]
- utest.h - Single header unit testing framework for C and C++. [Unlicense]
- Deleaker - A tool for resource leak detection, including memory, GDI and handle leaks.
- CppUnit - C++ port of JUnit. [LGPL2]
- doctest - The lightest feature rich C++ single header testing framework. [MIT]
- Google Mock - A library for writing and using C++ mock classes. [BSD]
-
Debugger
- Comparison of debuggers - A list of Debuggers from Wikipedia.
- GDB - GNU Debugger.
- Valgrind - A tool for memory debugging, memory leak detection, and profiling.
-
Frameworks
- ASL - Adobe Source Libraries provides peer-reviewed and portable C++ source libraries. [MIT]
- Boost - A large collection of generic C++ libraries. [Boost] [website](http://www.boost.org/)
- Cinder - A community-developed, free and open source library for professional-quality creative coding. [BSD]
- GLib - GLib provides the core application building blocks for libraries and applications written in C. [LGPL]
- MiLi - Minimal headers-only C++ Library. [Boost]
- 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]
- uSTL - The small STL library. [MIT]
- abseil-cpp - Abseil C++ Common Libraries. [Apache2]
- ASL - Adobe Source Libraries provides peer-reviewed and portable C++ source libraries. [MIT]
- BDE - The BDE Development Environment from Bloomberg Labs. [Apache2]
- Dlib - A general purpose cross-platform C++ library designed using contract programming and modern C++ techniques. [Boost] [website](http://dlib.net/)
- EASTL - Electronic Arts Standard Template Library. [BSD]
- ETL - Embedded Template Library. [MIT]
- ffead-cpp - Framework for Enterprise Application Development. [Apache2]
- Folly - An open-source C++ library developed and used at Facebook. [Apache2]
- FunctionalPlus - Functional Programming Library for C++. Write concise and readable C++ code. [MIT]
- JUCE - An all-encompassing C++ class library for developing cross-platform software. [Core-Module: ISC, Rest: GPL2/GPL3/Commercial] [website](http://www.juce.com/)
- 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]
- OpenFrameworks - A cross platform open source toolkit for creative coding in C++. [MIT] [website](http://www.openframeworks.cc/)
- STLport - An exemplary version of STL. [Free]
- tbox - A glib-like multi-platform c library. [Apache2] [website](http://tboox.org/)
- Yomm2 - Fast, Orthogonal, Open multi-methods. Supersedes [Yomm11](https://github.com/jll63/yomm11) [Boost]
- 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]
- Cxxomfort - A small, header-only library that backports to C++03 some of the nifty C++11 goodies. [MIT]
- Ultimate++ - A C++ cross-platform rapid application development framework. [BSD]
- Qt - A cross-platform application and UI framework. [GPL/LGPL/Commercial]
- STXXL - Standard Template Library for Extra Large Data Sets. [Boost]
- Loki - A C++ library of designs, containing flexible implementations of common design patterns and idioms. [MIT]
-
Game Engine
- Banshee 3D - Modern C++14 game engine with Vulkan support, fully featured editor and C# scripting. [LGPL3/Commercial]
- Grit - Community project to build a free game engine for implementing open world 3D games. [MIT]
- toy engine - toy is a thin and modular c++ game engine and offers simple expressive c++ idioms to design full featured 2D or 3D games in fast iterations.
- Urho3D - A free lightweight, cross-platform 2D and 3D game engine implemented in C++. Greatly inspired by OGRE and Horde3D. [MIT]
- Atomic Game Engine - A multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript. [Commercial]
- Cocos2d-x - A multi-platform framework for building 2d games, interactive books, demos and other graphical applications. [MIT]
- EnTT - Gaming meets modern C++. [MIT]
- 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]
- KlayGE - a cross-platform open source game engine with plugin-based architecture. [GPLv2] [website](http://www.klayge.org/)
- OpenXRay - a community-modified X-Ray engine used in S.T.A.L.K.E.R. game series. [Modified BSD/non-commercial only]
- Panda3D - A game engine, a framework for 3D rendering and game development for Python and C++ programs. [Modified BSD] [website](https://www.panda3d.org/)
- PixelGameEngine - The official distribution of olcPixelGameEngine, a tool used in javidx9's YouTube videos and projects. [OLC3]
- Polycode - A cross-platform framework for creative code in C++ (with Lua bindings). [MIT] [website](http://polycode.org/)
- Torque2D - An open-source and cross-platform C++ engine built for 2D game development. [MIT] [website](https://www.garagegames.com/products/torque-2d)
- Torque3D - An open-source C++ engine built for 3D game development. [MIT] [website](https://www.garagegames.com/products/torque-3d)
-
Graphics
- assimp - Open Asset Import Library (assimp) is a cross-platform 3D model import library which aims to provide a common API for different 3D asset file formats. [BSD-3-Clause] [website](http://www.assimp.org)
- bgfx - A cross-platform rendering library. [BSD]
- bs::framework - Modern C++14 library for the development of real-time graphical applications. [MIT]
- Diligent Engine - A modern cross-platform low-level 3D graphics library. [Apache2]
- DirectXTK - A collection of helper classes for writing DirectX 11.x code in C++. [MIT]
- GLFW - A simple, cross-platform OpenGL wrangling library. [zlib/libpng]
- herebedragons - A basic 3D scene implemented with various engines, frameworks or APIs. [MIT] [website](http://simonrodriguez.fr/dragon/)
- Horde3D - A small 3D rendering and animation engine. [EPL]
- Ion - A small and efficient set of libraries for building cross-platform client or server applications that use 3D graphics. [Apache2] [website](https://google.github.io/ion/)
- libigl - Simple C++ geometry processing library. [MPL2]
- magnum - Lightweight and modular C++11/C++14 graphics middleware for games and data visualization. [MIT] [website](http://magnum.graphics)
- NanoVG - Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations. [Zlib]
- OpenSubdiv - Pixar's library for evaluating and rendering subdivision surfaces on CPU and GPU. [Modified Apache2]
- 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](https://sites.google.com/site/skiadocs/home)
- TinySpline - A small, yet powerful ANSI C library for interpolating, transforming, and querying arbitrary NURBS, B-Splines, and Bézier curves. [MIT]
- urho3d - Cross-platform rendering and game engine. [Many different, mostly MIT]
- Yocto/GL - Tiny C++ Libraries for Data-Driven Physically-based Graphics. [MIT]
- Irrlicht - A high performance realtime 3D engine written in C++. [zlib]
- Cairo - A 2D graphics library with support for multiple output devices. [LGPL2 or Mozilla MPL]
- OpenSceneGraph - An open source high performance 3D graphics toolkit. [OSGPL]
-
GUI
- CEGUI - Flexible, cross-platform GUI library.
- libRocket - libRocket is a C++ HTML/CSS game interface middleware. [MIT]
- MyGUI - Fast, flexible and simple GUI. [MIT]
- nana - Nana is a cross-platform library for GUI programming in modern C++ style. [Boost]
- CEGUI - Flexible, cross-platform GUI library.
- GacUI - GPU Accelerated C++ User Interface, with WYSIWYG developing tools, XML supports, built-in data binding and MVVM features. [Ms-PL]
- imgui - Immediate Mode Graphical User Interface with minimal dependencies. [MIT]
- libRocket - libRocket is a C++ HTML/CSS game interface middleware. [MIT]
- libui - Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports. [MIT]
- MyGUI - Fast, flexible and simple GUI. [MIT]
- NanoGui - A minimalistic cross-platform widget library for OpenGL 3.x or higher. [BSD]
- nuklear - A single-header ANSI C gui library. [PublicDomain]
- QCustomPlot - Qt plotting widget without further dependencies. [GPLv3]
- Yue - A library for creating native cross-platform GUI apps. [LGPLv2]
- nana - Nana is a cross-platform library for GUI programming in modern C++ style. [Boost]
- nana - Nana is a cross-platform library for GUI programming in modern C++ style. [Boost]
- nana - Nana is a cross-platform library for GUI programming in modern C++ style. [Boost]
- nana - Nana is a cross-platform library for GUI programming in modern C++ style. [Boost]
- gtkmm - The official C++ interface for the popular GUI library GTK+. [LGPL]
- nana - Nana is a cross-platform library for GUI programming in modern C++ style. [Boost]
- 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]
- nana - Nana is a cross-platform library for GUI programming in modern C++ style. [Boost]
- nana - Nana is a cross-platform library for GUI programming in modern C++ style. [Boost]
-
Image Processing
- 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]
- MagickWnd - ImageMagick program interfaces for C. [Apache2]
- stb-image - STB single-header image loading library. [Public Domain]
- tesseract-ocr - An OCR engine. [Apache2]
- GD - GD Graphics Library, famously used in PHP for image loading/manipulation & thumbnail generation. [custom permissive license, requires mention in user docs] [website](http://libgd.github.io/)
- libvips - A fast image processing library with low memory needs. [LGPL] [website](http://www.vips.ecs.soton.ac.uk/)
- OpenCV - Open source computer vision. [BSD]
- OpenImageIO - Powerful image and texture wrangling library with support for a wide number of common lossy and RAW formats. [Modified BSD]
- Simd - C++ image processing library with using of SIMD: SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX-512, VMX(Altivec) and VSX(Power7), NEON for ARM. [MIT]
- TinyEXIF - Tiny ISO-compliant C++ EXIF and XMP parsing library for JPEG. [MIT]
- Video++ - A C++14 high performance video and image processing library. [MIT]
- VIGRA - A generic C++ computer vision library for image analysis. [MIT X11]
- 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]
- GDCM - Grassroots DICOM library.
-
Integrated Development Environment
- Anjuta DevStudio - The GNOME IDE. [GPL3]
- IBM VisualAge - A family of computer integrated development environments from IBM.
- YouCompleteMe - YouCompleteMe is a fast, as-you-type, fuzzy-search code completion engine for Vim.
- color_coded - A vim plugin for libclang-based highlighting. [MIT]
- Irony-mode - A C/C++ minor mode for Emacs powered by libclang.
- juCi++ - Cross-platform, lightweight C++ IDE with libclang integration. [MIT]
- rtags - A c/c++ client/server indexer with for integration with emacs based on clang.
- Xcode - Developed by Apple.
- Qt Creator - A cross-platform C++, JavaScript and QML IDE which is part of the SDK for Qt.
- Microsoft Visual Studio - An IDE from Microsoft.
- Code::Blocks - A free C, C++ and Fortran IDE.
- Eclipse CDT - A fully functional C and C++ IDE based on the Eclipse platform.
-
Internationalization
-
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]
- WAMP - Provides RPC and pub/sub messaging patterns. (various implementations, various languages)
- 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](http://www.grpc.io/)
- Ice - Comprehensive RPC framework with support for C++, C#, Java, JavaScript, Python and more. [GPLv2]
- libjson-rpc-cpp - JSON-RPC framework for C++ servers and clients. [MIT]
- nanomsg - A simple high-performance implementation of several "scalability protocols". [MIT] [website](http://nanomsg.org/)
- nng - nanomsg-next-generation, a light-weight brokerless messaging library. [MIT] [website](https://nanomsg.github.io/nng/)
- rpclib - A modern C++ msgpack-RPC server and client library. [MIT]
- 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)
- Cap'n Proto - Fast data interchange format and capability-based RPC system. [MIT]
- xmlrpc-c - A lightweight RPC library based on XML and HTTP. [BSD]
-
JSON
- 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]
- Jsmn - A minimalistic JSON parser in C. [MIT]
- json - JSON for Modern C++. [MIT]
- JSON++ - A JSON parser in C++. [MIT]
- json.h - A simple one header/one source solution to parsing JSON in C and C++. [Unlicense]
- json-c - A JSON implementation in C. [MIT]
- JsonCpp - A C++ library for interacting with JSON. [MIT]
- 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]
- LIBUCL - Universal configuration library parser [BSD-2-Clause]
- PicoJSON - A header-file-only, JSON parser serializer in C++. [BSD]
- 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]
- sajson - Lightweight, extremely high-performance JSON parser for C++11. [MIT]
- ujson - µjson is a a small, C++11, UTF-8, JSON library. [MIT]
- YAJL - A fast streaming JSON parsing library in C. [ISC]
- libjson - Lightweight JSON library. [?]
- json-parser - Very low footprint JSON parser written in portable ANSI C. [BSD]
- qt-json - A simple class for parsing JSON data into a QVariant hierarchy and vice versa. [GPLv3]
-
Logging
- templog - A very small and lightweight C++ library which you can use to add logging to your C++ applications. [Boost]
Categories
Miscellaneous
41
Build Systems
38
Networking
33
Frameworks
31
Math
26
Debug
26
JSON
24
GUI
24
Concurrency
24
Graphics
21
Cryptography
21
Scripting
21
Database
20
Compression
19
Other Awesome Projects
18
Game Engine
17
Image Processing
16
Logging
14
Websites
14
Inter-process communication
13
CLI
13
Machine Learning
13
Integrated Development Environment
12
Articles
12
Artificial Intelligence
11
Web Application Framework
11
XML
10
Physics
10
Audio
9
Serialization
9
Containers
9
Multimedia
9
Videos
8
Compiler
8
Online Compiler
7
PDF
6
Static Code Analysis
6
Coding Style
5
Standard Libraries
5
Video
5
Biology
5
Scientific Computing
5
Regular Expression
5
BitTorrent
4
Robotics
4
Internationalization
4
Asynchronous Event Loop
4
Books
3
Weblogs
3
Virtual Machines
3
Debugger
3
Memory Allocation
2
Coding Style Tools
2
API Design
1
Talks
1
Sorting
1
Sub Categories
Keywords
c-plus-plus
55
cpp
55
c
41
cross-platform
16
header-only
14
opengl
13
python
13
cplusplus
13
machine-learning
12
library
12
json
11
gamedev
10
game-development
10
game-engine
9
cpp17
9
graphics
9
cpp11
9
cpp14
8
vulkan
8
windows
7
modern-cpp
7
deep-learning
7
cryptography
7
engine
6
clang
6
http
6
neural-network
6
java
6
cuda
6
audio
6
rpc
5
c-plus-plus-11
5
linux
5
android
5
scientific-computing
5
performance
5
webserver
5
logging
5
embedded
5
crypto
5
awesome
5
ios
5
directx
5
websockets
5
d3d11
5
javascript
5
cmake
5
gpgpu
4
opencl
4
framework
4