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: 5 days ago
JSON representation
-
Graphics
- libigl - Simple C++ geometry processing library. [MPL2]
- LLGL - Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs. [BSD-3-Clause]
- LunaSVG - a standalone SVG rendering library in C++. [MIT]
- magnum - Lightweight and modular C++11/C++14 graphics middleware for games and data visualization. [MIT] [website](http://magnum.graphics)
- micro-gl - Realtime, Embeddable, Headers Only C++11 CPU vector graphics. no STD lib, no FPU and no GPU required. [CUSTOM] [website](https://micro-gl.github.io/docs/microgl)
- 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] [website](https://skia.org/)
- ThorVG - a platform-independent portable library that allows for drawing vector-based scenes and animations, including SVG and Lottie. [MIT] [website](https://www.thorvg.org/)
- 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]
- iup - Multi-platform toolkit for building graphical user interfaces. [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]
- avir - High-quality Pro HDR image resizer and fast SIMD Lanczos resizer. [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.
- Cevelop - Cross-platform C and C++ IDE based on Eclipse CDT with additional plug-ins.
-
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]
Programming Languages
Categories
Miscellaneous
108
Networking
70
Websites
63
Math
63
Frameworks
53
Debug
51
Concurrency
47
Database
47
JSON
43
Image Processing
42
Compression
37
Scripting
37
GUI
36
CLI
35
Graphics
32
Cryptography
31
Articles
31
Audio
29
Build Systems
29
Containers
28
Game Engine
28
Machine Learning
26
Other Awesome Projects
25
Logging
23
Integrated Development Environment
21
Serialization
21
Web Application Framework
20
Inter-process communication
19
Reflection
19
Artificial Intelligence
18
Online Compiler
17
Static Code Analysis
17
Physics
17
XML
16
Memory Allocation
15
Weblogs
15
PDF
14
Regular Expression
14
Compiler
14
Videos
13
Configuration
12
Multimedia
12
Robotics
10
CSV
10
Asynchronous Event Loop
10
Video
9
Biology
8
Coding Style
8
Scientific Computing
8
Internationalization
7
Yaml
7
Office Open XML
7
Documentation
7
Chemistry
7
Font
6
Debugger
6
Standard Libraries
6
DSP
6
Coding Style Tools
6
Coding Standards
5
Talks
5
Data visualization
5
Podcasts
4
BitTorrent
4
Sorting
4
Serial Port
3
Virtual Machines
3
Books
3
API Design
2
Graph
2
Sub Categories
Keywords
cpp
194
c-plus-plus
109
c
90
cpp17
64
header-only
63
cross-platform
42
cpp11
38
json
37
cplusplus
36
cpp20
35
library
35
python
31
cpp14
30
linux
24
windows
23
serialization
22
machine-learning
22
simd
21
opengl
20
cmake
20
game-engine
18
http
18
cpp-library
18
modern-cpp
17
gamedev
17
game-development
17
parser
17
reflection
16
embedded
14
deep-learning
14
http-server
14
audio
13
graphics
13
clang
12
javascript
12
java
12
cuda
11
logging
11
neural-network
11
scientific-computing
11
data-structures
11
c-plus-plus-11
11
high-performance
11
performance
11
database
11
no-dependencies
11
android
10
macos
10
cli
10
compression
10