A choice list of the most practical and recognized C++ frameworks and libraries that are production ready...
Finding a suitable library from fffaraz/awesome-cpp can be maddening -- there are so many repositories listed, some of them have been abandoned for years, some of them are just toys instead, true treasure was buried in tons of other stuffs. In this repository, I'd like to list repository which:
- ...is a library/framework (not documentations, blogs, demo/example code, applications)
- ...is well recognized (2K stars at least)
- ...is still been maintained/developed (commited recently)
- ...is ready for use (not WIP)
- ...is wrote in C++ or has a friendly C++ API
- ...is open-source and hosted(at least mirrored) on GitHub.
Note: a few interesting and potential repositories that don't have 2K stars or still in active development is in the list with a 🚧 mark, still it's OK to use them in personal hobby projects.
Please feel free to open a PR and add things to the list!
- p-ranav/argparse - A header-only argument parser for Modern C++.
- p-ranav/indicators - Activity Indicators for Modern C++.
- David-Haim/concurrencpp 🚧 - Modern concurrency for C++. Tasks, executors, timers and C++20 coroutines to rule them all.
- max0x7ba/atomic_queue 🚧 - C++14 multiple-producer-multiple-consumer lock-free queues.
- netcan/asyncio 🚧 - A C++20 library to write concurrent code using the async/await syntax.
- taskflow/taskflow ⚡ - A general-purpose parallel and heterogeneous task programming system.
- google/leveldb ⚡ - A fast key-value storage library that provides an ordered mapping from string keys to string values.
- sharkdp/dbg-macro - A single-header dbg(…) macro for C++.
- bblanchon/ArduinoJson - Simple and efficient JSON library for Arduino and embedded C++.
- idea4good/GuiLite - The smallest header-only GUI library(4 KLOC) for all platforms.
- fmtlib/fmt ⚡ - A modern formatting library.
- arrayfire/arrayfire - A general-purpose tensor library that simplifies the software development process for the parallel architectures found in CPUs, GPUs, and other hardware acceleration devices.
- GNOME/gtkmm - The official C++ interface for the popular GUI library GTK+.
- idea4good/GuiLite - The smallest header-only GUI library(4 KLOC) for all platforms.
- ocornut/imgui ⚡ - Bloat-free Graphical User interface for C++ with minimal dependencies.
- erincatto/Box2D - Box2D is a 2D physics engine for games.
- jrouwe/JoltPhysics - A multi core friendly rigid body physics and collision detection library, written in C++, suitable for games and VR applications.
- pocketpy/pocketpy 🚧 - A header-only Python interpreter for game scripting in Modern C++.
- raysan5/raylib ⚡ - A simple and easy-to-use library to enjoy videogames programming.
- skypjack/entt ⚡ - Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more.
- ThePhD/sol2 - a C++ <-> Lua API wrapper with advanced features and top notch performance.
- davisking/dlib ⚡ - A toolkit for making real world machine learning and data analysis applications in C++.
- opencv/opencv ⚡ - Open Source Computer Vision Library.
- PointCloudLibrary/pcl - A standalone, large scale, open project for 2D/3D image and point cloud processing.
- unicode-org/icu - A set of C/C++ libraries providing Unicode and Globalization support.
- bblanchon/ArduinoJson - Simple and efficient JSON library for Arduino and embedded C++.
- nlohmann/json ⚡ - JSON for Modern C++.
- simdjson/simdjson ⚡ - Parsing gigabytes of JSON per second.
- Tencent/rapidjson ⚡ - A fast JSON parser/generator for C++ with both SAX/DOM style API.
- gabime/spdlog ⚡ - Fast C++ logging library.
- davisking/dlib ⚡ - A toolkit for making real world machine learning and data analysis applications in C++.
- flashlight/flashlight - A C++ standalone library for machine learning.
- mlpack/mlpack - A fast, header-only C++ machine learning library.
- pytorch/pytorch ⚡ - The PyTorch C++ frontend is a pure C++ interface to the PyTorch machine learning framework.
- arrayfire/arrayfire - A general-purpose tensor library that simplifies the software development process for the parallel architectures found in CPUs, GPUs, and other hardware acceleration devices.
- dpilger26/NumCpp - C++ implementation of the Python Numpy library .
- g-truc/glm ⚡ - OpenGL Mathematics.
- libsdl-org/SDL - Simple Directmedia Layer.
- SFML/SFML ⚡ - Simple and Fast Multimedia Library.
- boostorg/asio - A cross-platform C++ library for network and low-level I/O programming.
- boostorg/beast - HTTP and WebSocket built on Boost.Asio in C++11.
- CrowCpp/Crow - A Fast and Easy to use microframework for the web.
- libcpr/cpr - C++ Requests: Curl for People, a spiritual port of Python Requests.
- netcan/asyncio 🚧 - A C++20 library to write concurrent code using the async/await syntax.
- pocoproject/poco - A Powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems.
- sogou/workflow ⚡ - C++ Parallel Computing and Asynchronous Networking Framework.
- uNetworking/uWebSockets ⚡ - Simple, secure & standards compliant web server for the most demanding of applications.
- erincatto/Box2D - Box2D is a 2D physics engine for games.
- jrouwe/JoltPhysics - A multi core friendly rigid body physics and collision detection library, written in C++, suitable for games and VR applications.
- Neargye/magic_enum - Static reflection for enums (to string, from string, iteration) for modern C++, work with any enum type without any macro or boilerplate code.
- bkaradzic/bgfx ⚡ - Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
- libsdl-org/SDL - Simple Directmedia Layer.
- raysan5/raylib ⚡ - A simple and easy-to-use library to enjoy videogames programming.
- SFML/SFML ⚡ - Simple and Fast Multimedia Library.
- pocketpy/pocketpy 🚧 - A header-only Python interpreter for game scripting in Modern C++.
- ThePhD/sol2 - a C++ <-> Lua API wrapper with advanced features and top notch performance.
- google/flatbuffers ⚡ - A cross platform serialization library architected for maximum memory efficiency.
- protocolbuffers/protobuf ⚡ - A language-neutral, platform-neutral, extensible mechanism for serializing structured data.
- USCiLab/cereal - A C++11 library for serialization.
- ArthurSonzogni/FTXUI - A simple cross-platform C++ library for terminal based user interfaces.
- catchorg/Catch2 ⚡ - A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later.
- leethomason/tinyxml2 - A simple, small, efficient, C++ XML parser that can be easily integrated.
Please refer to CONTRIBUTING.md for more information.