awesome-cpp
A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.
https://github.com/fffaraz/awesome-cpp
Last synced: 12 days ago
JSON representation
-
Graphics
- 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]
- olive.c - Simple 2D Graphics Library. [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.
- FLTK - Fast, light, cross-platform C++ GUI toolkit. [LGPL2]
- FOX Toolkit - an open-source, cross-platform widget toolkit. [LGPL]
- iup - Multi-platform toolkit for building graphical user interfaces. [MIT]
- nana - Nana is a cross-platform library for GUI programming in modern C++ style. [Boost]
- QCustomPlot - Qt plotting widget without further dependencies. [GPLv3]
- QwtPlot3D - A feature-rich Qt/OpenGL-based C++ programming library, providing essentially a bunch of 3D-widgets. [zlib]
- 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]
- FOX Toolkit - an open-source, cross-platform widget toolkit. [LGPL]
- Boden - Native, mobile, cross-platform GUI Framework. [GPL/LGPL/Proprietary] [website](https://www.boden.io)
- CEGUI - Flexible, cross-platform GUI library.
- Elements - Lightweight, fine-grained, resolution independent, modular GUI library. [MIT]
- GacUI - GPU Accelerated C++ User Interface, with WYSIWYG developing tools, XML supports, built-in data binding and MVVM features. [Ms-PL]
- gtkmm - The official C++ interface for the popular GUI library GTK+. [LGPL]
- imgui - Immediate Mode Graphical User Interface with minimal dependencies. [MIT]
- implot - Immediate Mode Plotting widgets for imgui. [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]
- nana - Nana is a cross-platform library for GUI programming in modern C++ style. [Boost]
- NanoGui - A minimalistic cross-platform widget library for OpenGL 3.x or higher. [BSD]
- NAppGUI - SDK for building cross-platform desktop apps in ANSI-C. [MIT] [website](https://nappgui.com/en/home/web/home.html)
- nuklear - A single-header ANSI C gui library. [PublicDomain]
- RmlUi - The HTML/CSS User Interface library evolved. Fork of libRocket. [MIT]
- Saucer - A modern, cross-platform C++ webview library. [MIT]
- Slint - Lightweight GUI toolkit for desktop and embedded. [GPL/Free/Proprietary] [website](https://slint.dev/)
- TGUI - Cross-platform modern c++ GUI. [Zlib] [website](https://tgui.eu/)
- WebUI - Use any web browser as GUI, with your preferred language in the backend and HTML5 in the frontend. [MIT] [website](https://webui.me/)
- wxCharts - A library to create charts in wxWidgets applications. [MIT] [website](https://www.wxishiko.com/wxCharts/)
- Yue - A library for creating native cross-platform GUI apps. [LGPLv2]
- Brisk - Cross-platform C++20 GUI framework. MVVM, reactive capabilities. Scalable, accelerated GPU rendering [GPL/Proprietary] [website](https://brisklib.com)
- 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]
- gtkmm - The official C++ interface for the popular GUI library GTK+. [LGPL]
- GuiLite - The smallest header-only GUI library (5 KLOC) for all platforms. [Apache-2.0]
- LCUI - A small C library for building user interfaces with C, XML and CSS. [MIT]
-
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]
- FreeImage - An open source library that supports popular graphics image formats and others as needed by today's multimedia applications. [GPL2 or GPL3]
- DCMTK - DICOM Toolkit.
- ITK - An open-source, cross-platform system for image analysis. [Apache2 from ITK 4.0]
- Magick++ - ImageMagick program interfaces for C++. [Apache2]
- MagickWnd - ImageMagick program interfaces for C. [Apache2]
- OpenCV - Open source computer vision. [Apache2] [website](https://opencv.org)
- OpenEXR - Cross-platform library for high dynamic range imaging. [Modified BSDF]
- stb-image - STB single-header image loading library. [Public Domain]
- tesseract-ocr - An OCR engine. [Apache2]
- Boost.GIL - Generic Image Library. [Boost] [website](https://boost.org/libs/gil)
- BitmapPlusPLus - Simple and Fast header only Bitmap C++ library. [MIT]
- fpng - Super fast C++ .PNG writer/reader. [Unlicense]
- 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/)
- Leptonica - Leptonica is an open source library containing software that is broadly useful for image processing and image analysis applications. [BSD-2-Clause] [website](http://leptonica.org/index.html)
- libavif - Library for encoding and decoding .avif files. [BSD-2-Clause]
- libfacedetection - Open source library for face detection in images. The face detection speed can reach 1500FPS. [BSD]
- libjpeg-turbo - A JPEG image codec that uses SIMD instructions to accelerate baseline JPEG encoding and decoding. [IJG & BSD-3-Clause & zlib] [website](https://libjpeg-turbo.org/)
- libjxl - JPEG XL image format reference implementation. [BSD-3-Clause]
- libpng - the reference library for use in applications that read, create, and manipulate PNG (Portable Network Graphics) raster image files. [libpng-2.0] [website](https://libpng.sourceforge.io/)
- libspng - Simple, modern libpng alternative. [BSD-2] [website](https://libspng.org/)
- libvips - A fast image processing library with low memory needs. [LGPL] [website](http://www.vips.ecs.soton.ac.uk/)
- LodePNG - PNG encoder and decoder in C and C++. [Zlib]
- MozJPEG - Improved JPEG encoder. [BSD/BSD-3-Clause/ZLIB]
- OpenImageIO - Powerful image and texture wrangling library with support for a wide number of common lossy and RAW formats. [Modified BSD]
- OpenJPEG - an open-source JPEG 2000 codec written in C language. [BSD-2-Clause]
- PlutoFilter - A single-header, zero-allocation image filter library in C. [MIT]
- QOI - The “Quite OK Image Format” for fast, lossless image compression. [MIT]
- 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]
- TinyDNG - Header-only Tiny DNG/TIFF loader and writer in C++. [MIT]
- TinyEXIF - Tiny ISO-compliant C++ EXIF and XMP parsing library for JPEG. [MIT]
- TinyTIFF - lightweight TIFF reader/writer library. [GPL-3.0]
- 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]
- SAIL - Easy-to-use cross-platform image decoding library with pluggable image codecs. [MIT]
- 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.
- OpenImageDenoise - High-performance, high-quality denoising library for ray-traced images. [Apache-2.0] [website](https://www.openimagedenoise.org/)
- bitmap - C++ Bitmap Library for reading, writing, and processing BMP image files. [MIT]
-
Integrated Development Environment
- Anjuta DevStudio - The GNOME IDE. [GPL3]
- Cevelop - Cross-platform C and C++ IDE based on Eclipse CDT with additional plug-ins.
- Dev-C++ - A portable C/C++/C++11 IDE.
- Eclipse CDT - A fully functional C and C++ IDE based on the Eclipse platform.
- IBM VisualAge - A family of computer integrated development environments from IBM.
- KDevelop - A free, open source IDE.
- Microsoft Visual Studio - An IDE from Microsoft.
- C Playground - Online C Programming IDE - An online IDE to practice C Programming where you can write, edit, and run code online.
- color_coded - A vim plugin for libclang-based highlighting. [MIT]
- Embarcadero Dev-CPP - A fork of Dev-C++ that comes preinstalled with new themes and modern compilers. [GPLv2] [website](https://www.embarcadero.com/free-tools/dev-cpp)
- Irony-mode - A C/C++ minor mode for Emacs powered by libclang.
- juCi++ - Cross-platform, lightweight C++ IDE with libclang integration. [MIT]
- Microsoft Visual Studio Code - An open-source IDE from Microsoft. [MIT] [website](https://code.visualstudio.com)
- Qt Creator - A cross-platform C++, JavaScript and QML IDE which is part of the SDK for Qt. [GPL3 with exceptions] [website](https://www.qt.io/product/development-tools)
- 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.
- 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
- gettext - GNU 'gettext'. [GPL2]
- libiconv - An encoding conversion library between different character encodings. [GPL]
- gettext - GNU 'gettext'. [GPL2]
- simdutf - Unicode routines (UTF8, UTF16, UTF32): billions of characters per second using SSE2, AVX2, NEON, AVX-512. [Apache-2/MIT]
- uni-algo - Unicode Algorithms Implementation for C/C++. [Unlicense or MIT]
- utf8.h - Single header utf8 string functions for C and C++. [Unlicense]
- utf8proc - A clean C library for processing UTF-8 Unicode data. [MIT]
-
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)
- xmlrpc-c - A lightweight RPC library based on XML and HTTP. [BSD]
- WAMP - Provides RPC and pub/sub messaging patterns. (various implementations, various languages)
- Boost.Interprocess - Header-only Boost library that supports kernel-level shared memory and memory-mapped files, with in-built synchronization mechanisms (semaphores, mutexes, and more). [Boost] [website](https://boost.org/libs/interprocess)
- bRPC - bRPC is an Industrial-grade RPC framework using C++ Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. [Apache2] [website](https://brpc.apache.org/)
- Cap'n Proto - Fast data interchange format and capability-based RPC system. [MIT] [website](https://capnproto.org/)
- eCAL - Pub/sub, client/server, C++/Python/C#, various message protocols (protobuf, capnproto ..). [Apache2] [website](http://www.ecal.io/)
- 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]
- iceoryx - True zero-copy inter-process communication framework for safety critical systems with bindings for C, Rust. Runs on Linux, QNX, Windows, Mac OS, FreeBSD. [Apache2] [website](https://iceoryx.io/)
- 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]
- SRPC - A lightweight RPC system that supports multiple protocols and OpenTelemetry. [Apache2]
- WAMP - Provides RPC and pub/sub messaging patterns. (various implementations, various languages)
- xmlrpc-c - A lightweight RPC library based on XML and HTTP. [BSD]
-
JSON
- libjson - Lightweight JSON library. [?]
- Boost.PropertyTree - A property tree parser/generator that can be used to parse XML/JSON/INI/Info files. [Boost] [website](https://boost.org/libs/property_tree)
- cJSON - Ultralightweight JSON parser in ANSI C. [MIT]
- DAW JSON Link - Fast, convenient JSON serialization and parsing in C++. [BSL-1.0]
- 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] [website](https://json.nlohmann.me)
- JSON++ - A JSON parser in C++. [MIT]
- json.cpp - a baroque JSON parsing / serialization library for C++. [Apache-2.0]
- json.h - A simple one header/one source solution to parsing JSON in C and C++. [Unlicense]
- json-build - C89 tiny zero-allocation JSON serializer. [MIT]
- json-c - A JSON implementation in C. [MIT]
- jsoncons - A C++ header-only library for JSON and JSON-like binary formats with JSONPointer, JSONPatch, JSONPath and JMESPath. [Boost]
- JsonCpp - A C++ library for interacting with JSON. [MIT]
- Jsonifier - A few classes for parsing and serializing objects from/into JSON - very rapidly. [MIT]
- jsonParse - A simple JSON parser in ANSI C. [MIT]
- json11 - A tiny JSON library for C++11. [MIT]
- json-struct - High performance, single header JSON parser parsing to and from C++ structs. [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]
- meojson - Next-gen C++ JSON/JSON5 Serialization Engine | Zero Dependency | Header-Only | Unleash JSON Potential. [MIT]
- parson - Parson is a lighweight json library written in C. [MIT]
- 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] [website](https://rapidjson.org)
- sajson - Lightweight, extremely high-performance JSON parser for C++11. [MIT]
- simdjson - Extremely fast JSON library that can parse gigabytes of JSON per second. [Apache-2.0]
- Sonic-Cpp - A fast JSON serializing & deserializing library, accelerated by SIMD. [Apache-2.0]
- taoJSON - Zero-dependency C++ header-only JSON library. [MIT]
- ujson - µjson is a a small, C++11, UTF-8, JSON library. [MIT]
- UltraJSON - Ultra fast JSON decoder and encoder written in C. [BSD-3-Clause]
- YAJL - A fast streaming JSON parsing library in C. [ISC]
- yyjson - A high performance JSON library written in ANSI C. [MIT]
- libjson - Lightweight JSON library. [?]
- JSON Toolkit - JSON, JSON Pointer, JSON Schema, and JSONL library for C++20. [AGPL/Commercial]
- json-parser - Very low footprint JSON parser written in portable ANSI C. [BSD]
- libdart - A high-performance, network-optimized JSON manipulation library. [MIT]
- qt-json - A simple class for parsing JSON data into a QVariant hierarchy and vice versa. [GPLv3]
-
Logging
- Log4cpp - A library of C++ classes for flexible logging to files, syslog, IDSA and other destinations. [LGPL]
- templog - A very small and lightweight C++ library which you can use to add logging to your C++ applications. [Boost]
- P7Baical - An open source and cross-platform library for high-speed sending telemetry & trace data with minimal usage of CPU and memory. [LGPL]
- Abseil Logging - The Abseil Logging library provides facilities for writing log messages to stderr, files, or other sinks. [Apache-2.0]
- Blackhole - 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] [website](https://boost.org/libs/log)
- BqLog - A lightweight, high-performance logging system used in projects such as "Honor of Kings". [Apache-2.0]
- fmtlog - A performant fmtlib-style logging library with latency in nanoseconds. [MIT]
- G3log - Asynchronous logger with Dynamic Sinks. [PublicDomain]
- glog - C++ implementation of the Google logging module.
- haclog - An extremely fast plain C logging library. [MIT]
- log4cplus - A simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. [BSD & Apache2]
- loguru - A lightweight C++ logging library. [PublicDomain]
- lwlog - Very fast synchronous and asynchronous C++17 logging library. [MIT]
- ng-log - C++14 library for application-level logging. [BSD-3-Clause]
- plog - Portable and simple log for C++ in less than 1000 lines of code. [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]
- Quill - Asynchronous cross platform low latency logging library. [MIT]
- Log4cpp - A library of C++ classes for flexible logging to files, syslog, IDSA and other destinations. [LGPL]
- logfault - A simple, elegant and efficient C++ header-only logging library. [MIT]
-
Machine Learning
- sofia-ml - The suite of fast incremental algorithms for machine learning. [Apache2]
- Caffe - A fast framework for neural networks. [BSD]
- catboost - A fast, scalable, high performance Gradient Boosting on Decision Trees library. [Apache2]
- CCV - C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library. [BSD]
- darknet - Open source neural network framework written in C and CUDA. [PublicDomain] [website](https://pjreddie.com/darknet/)
- FAISS - A library for efficient similarity search and clustering of dense vectors. [MIT]
Programming Languages
Categories
Miscellaneous
107
Networking
70
Math
61
Websites
61
Frameworks
53
Debug
51
Concurrency
47
Database
44
JSON
43
Image Processing
41
Compression
37
Scripting
35
GUI
35
CLI
35
Graphics
32
Cryptography
31
Articles
31
Containers
28
Game Engine
28
Build Systems
27
Audio
27
Machine Learning
25
Other Awesome Projects
24
Logging
22
Serialization
21
Integrated Development Environment
20
Web Application Framework
20
Inter-process communication
19
Reflection
19
Artificial Intelligence
18
Physics
17
Online Compiler
17
Static Code Analysis
16
Memory Allocation
15
XML
15
Regular Expression
14
Compiler
14
Weblogs
13
Videos
13
PDF
13
Configuration
12
Multimedia
12
CSV
10
Asynchronous Event Loop
10
Robotics
10
Video
9
Biology
8
Scientific Computing
8
Chemistry
7
Internationalization
7
Yaml
7
Office Open XML
7
Coding Style
7
Font
6
DSP
6
Standard Libraries
6
Coding Style Tools
6
Documentation
6
Coding Standards
5
Debugger
5
Data visualization
5
Sorting
4
Talks
4
BitTorrent
4
Serial Port
3
Virtual Machines
3
Books
3
API Design
2
Graph
2
Podcasts
2
Sub Categories
Keywords
cpp
193
c-plus-plus
109
c
89
cpp17
64
header-only
62
cross-platform
42
cpp11
38
json
37
cplusplus
36
cpp20
35
library
34
python
31
cpp14
30
linux
24
windows
23
machine-learning
22
serialization
22
simd
21
opengl
20
cmake
20
http
18
game-engine
18
cpp-library
18
parser
17
modern-cpp
17
gamedev
17
game-development
17
reflection
16
deep-learning
14
embedded
14
http-server
14
graphics
13
audio
13
javascript
12
java
12
clang
12
logging
11
database
11
performance
11
cuda
11
c-plus-plus-11
11
no-dependencies
11
scientific-computing
11
high-performance
11
data-structures
11
csv
10
networking
10
compression
10
neon
10
gui
10