35 KiB
Awesome C/C++
A curated list of awesome C/C++ frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.
- Awesome C/C++
- Standard Libraries
- Frameworks
- Artificial Intelligence
- Asynchronous Event Loop
- Audio
- Compression
- Concurrency
- Containers
- Cryptography
- Database
- Debug
- Game Engine
- GUI
- Graphics
- Imaging
- Internationalization
- JSON
- Logging
- Machine Learning
- Math
- Mocking
- Multimedia
- Networking
- Physics
- Scripting
- Serialization
- Video
- Web Application Framework
- XML
- Miscellaneous
- Software
- Resources
- Other Awesome Lists
- Contributing
Standard Libraries
C++ Standard Library - including STL Containers, STL Aglorithm, STL Functional, etc.
- C++ Standard Library - A collection of classes and functions, which are written in the core language and part of the C++ ISO Standard itself.
- Standard Template Library - The Standard Template Library (STL).
- C POSIX library - A specification of a C standard library for POSIX systems.
- ISO C++ Standards Committee - ISO/IEC JTC1/SC22/WG21 - The C++ Standards Committee. website
Frameworks
C++ generic frameworks and libraries.
- Apache C++ Standard Library - A collection of algorithms, containers, iterators, and other fundamental components. [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. [MIT]
- 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 - Public part of EA-STL. [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 - An open source C++ toolkit for creative coding. [MIT]
- Qt - A cross-platform application and UI framework. [LGPL]
- 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++. [GPLv2]
- 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]
- STXXL - Standard Template Library for Extra Large Data Sets. [Boost]
- Ultimate++ - A C++ cross-platform rapid application development framework. [BSD]
- Windows Template Library - A C++ library for developing Windows applications and UI components. [Public]
- Yomm11 - Open multi-methods for C++11. [Boost]
Artificial Intelligence
- 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]
- Neu - A C++ 11 framework, collection of programming languages, and multipurpose software system designed for: the creation of artificial intelligence applications. [BSD]
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]
- 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]
- Speex - A free codec for free speech. Obsoleted by Opus. [BSD]
- Tonic - Easy and efficient audio synthesis in C++. [Unlicense]
Compression
Compression and Archiving Libraries
- bzip2 - A freely available, patent free, high-quality data compressor. [BSD]
- doboz - Compression library with very fast decompression. [zlib]
- 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]
- 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. [LGPL]
- 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]
- Snappy - A fast compressor/decompressor. [BSD]
- ZLib - A very compact compression library for data streams. [zlib]
- ZZIPlib - Provides read access on ZIP-archives. [MPL/LGPL]
Concurrency
Concurrency and Multithreading
- Boost.Compute - A C++ GPU Computing Library for OpenCL.
- Bolt - A C++ template library optimized for GPUs.
- C++React - A reactive programming library for C++11. [Boost]
- Intel TBB - Intel® Threading Building Blocks.
- Libclsph - An OpenCL based GPU accelerated SPH fluid simulation library.
- OpenCL - The open standard for parallel programming of heterogeneous systems.
- OpenMP - The OpenMP API.
- Thrust - A parallel algorithms library which resembles the C++ Standard Template Library (STL).
- HPX - A general purpose C++ runtime system for parallel and distributed applications of any scale.
- VexCL - A C++ vector expression template library for OpenCL/CUDA.
Containers
- C++ B-tree - A template library that implements ordered in-memory containers based on a B-tree data structure.
Cryptography
Cryptography and Encryption Libraries
- Crypto++ - A free C++ class library of cryptographic schemes. [Boost]
- LibTomCrypt - A fairly comprehensive, modular and portable cryptographic toolkit. [WTFPL]
- libsodium - P(ortable|ackageable) NaCl-based crypto library, opinionated and easy to use. [ISC]
- OpenSSL - A robust, commercial-grade, full-featured, and Open Source cryptography library. [Apache]
Database
Database Libraries, SQL Servers, ODBC Drivers, and Tools
- hiberlite - C++ Object-relational mapping for sqlite3.
- Hiredis - A minimalistic C client library for the Redis database.
- LMDB - Very fast embedded key/value store with full ACID semantics.
- RocksDB - Embedded key-value store for fast storage from facebook.
- SQLite - A completely embedded, full-featured relational database in a few 100k that you can include right into your project.
Debug
Debugging Libraries, Memory Leak and Resource Leak Detection, Unit Testing
- Catch - A modern, C++-native, header-only, framework for unit-tests, TDD and BDD.
- CppUnit - C++ port of JUnit.
- googletest - Google C++ Testing Framework.
- ig-debugheap - Multiplatform debug heap useful for tracking down memory errors.
- libtap - Write tests in C.
- microprofile - Profiler with web-view for multiple platforms.
- Remotery - Single C File Profiler with Web Viewer.
Game Engine
- Cocos2d-x - A multi-platform framework for building 2d games, interactive books, demos and other graphical applications.
- Grit - Community project to build a free game engine for implementing open world 3D games.
- Irrlicht - An open source high performance realtime 3D engine written in C++.
- Polycode - Open-Source Framework for creating games in C++ (with Lua bindings).
GUI
Graphic User Interface
- GTK+ - A multi-platform toolkit for creating graphical user interfaces.
- gtkmm - The official C++ interface for the popular GUI library GTK+.
- imgui - Immediate Mode Graphical User Interface with minimal dependencies.
- libRocket - libRocket is a C++ HTML/CSS game interface middleware.
- Ncurses - A terminal user interfaces.
- Qwt - Qt Widgets for Technical Applications.
- QwtPlot3D - A feature-rich Qt/OpenGL-based C++ programming library, providing essentially a bunch of 3D-widgets.
- OtterUI - OtterUI is a User Interface development solution for embedded systems and interactive entertainment software.
- wxWidgets - A C++ library that lets developers create applications for Windows, Mac OS X, Linux and other platforms with a single code base.
Graphics
- bgfx - A cross-platform rendering library.
- Cairo - A 2D graphics library with support for multiple output devices.
- CImg - A small, open source, C++ toolkit for image processing.
- Horde3D - A small 3D rendering and animation engine.
- Ogre 3D - A scene-oriented, real-time, flexible 3D rendering engine (as opposed to a game engine) written in C++.
- Panda3D - A framework for 3D rendering and game development for Python and C++ .
- Skia - A complete 2D graphic library for drawing Text, Geometries, and Images. webpage
- urho3d - Cross-platform rendering and game engine.
Internationalization
- IBM ICU - A set of C/C++ and Java libraries providing Unicode and Globalization support.
- gettext - GNU `gettext'.
JSON
- frozen - ⭐ 20+ - JSON parser and generator for C/C++.
- Jansson - ⭐ 650+ - C library for encoding, decoding and manipulating JSON data.
- jbson - ⭐ <10 - jbson is a library for building & iterating BSON data, and JSON documents in C++14.
- JeayeSON - ⭐ 10+ - A very sane (header only) C++ JSON library.
- JSON++ - ⭐ 130+ - A JSON parser in C++.
- json11 - ⭐ 290+ - A tiny JSON library for C++11.
- PicoJSON - ⭐ 170+ - A header-file-only, JSON parser serializer in C++.
- qt-json - ⭐ 120+ - A simple class for parsing JSON data into a QVariant hierarchy and vice versa.
- RapidJSON - ⭐ 170+ - A fast JSON parser/generator for C++ with both SAX/DOM style API.
- YAJL - ⭐ 1,100+ - A fast streaming JSON parsing library in C.
Logging
- Log4cpp - A library of C++ classes for flexible logging to files, syslog, IDSA and other destinations.
- templog - A very small and lightweight C++ library which you can use to add logging to your C++ applications.
Machine Learning
- Caffe - A fast framework for neural networks.
- CCV - C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library.
- mlpack - A scalable c++ machine learning library.
- OpenCV - Open Source Computer Vision Library. [BSD] website
- Recommender - C library for product recommendations/suggestions using collaborative filtering (CF).
- SHOGUN - The Shogun Machine Learning Toolbox.
- sofia-ml - The suite of fast incremental algorithms for machine learning.
Math
- blaze - high-performance C++ math library for dense and sparse arithmetic.
- ceres-solver - C++ library for modeling and solving large complicated nonlinear least squares problems from google.
- cml - free C++ math library for games and graphics.
- Eigen - A high-level C++ library of template headers for linear algebra, matrix and vector operations, numerical solvers and related algorithms. [MPL2]
Mocking
- googlemock - A library for writing and using C++ mock classes.
Multimedia
- GStreamer - A library for constructing graphs of media-handling components.
- libVLC - libVLC (VLC SDK) media framework.
- QtAv - A multimedia playback framework based on Qt and FFmpeg to write a player easily. [LGPL] website
- SFML - Simple and Fast Multimedia Library.
- SDL - Simple DirectMedia Layer.
Networking
- ACE - An OO Network Programming Toolkit in C++.
- Boost.Asio - A cross-platform C++ library for network and low-level I/O programming.
- Casablanca - C++ REST SDK.
- cpp-netlib - A collection of open-source libraries for high level network programming.
- Muduo - A C++ non-blocking network library for multi-threaded server in Linux.
- net_skeleton - TCP client/server library for C/C++.
- nope.c - A C language-based ultra-light software platform for scalable server-side and networking applications. Think node.js for C programmers.
- Onion - HTTP server library in C designed to be lightweight and easy to use.
- POCO - C++ class libraries and frameworks for building network- and internet-based applications that run on desktop, server, mobile and embedded systems.
- Tufão - An asynchronous web framework for C++ built on top of Qt.
- WebSocket++ - C++/Boost Asio based websocket client/server library.
- ZeroMQ - High-speed, modular asynchronous communication library.
Physics
Dynamics simulation engines
- Box2D - A 2D physics engine for games.
- Bullet - A 3D physics engine for games. website
- Chipmunk - A fast and lightweight 2D game physics library. website
- LiquidFun - A 2D physics engine for games.
- ODE - Open Dynamics Engine - An open source, high performance library for simulating rigid body dynamics.
- ofxBox2d - openFrameworks wrapper for Box2D.
- Simbody - High-performance C++ multibody dynamics/physics library for simulating articulated biomechanical and mechanical systems like vehicles, robots, and the human skeleton.
Scripting
- ChaiScript - An easy to use embedded scripting language for C++. website
- Lua - A minimal and fast scripting engine for configuration files and basic application scripting.
- luacxx - C++11 API for creating Lua bindings.
- SWIG - a wrapper/interface Generator that let you link your c++ code to Javascript, Perl, PHP, Python, Tcl and Ruby.
- V7 - An embedded JavaScript engine.
- V8 - A fast JavaScript engine by Google that can be embedded into any C++ application.
Serialization
- Cap'n Proto - Fast data interchange format and capability-based RPC system. [MIT]
- cereal - A C++11 library for serialization. [BSD]
- 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]
- SimpleBinaryEncoding - encoding and decoding application messages in binary format for low-latency applications. [Apache2]
Video
- libvpx - VP8/VP9 Codec SDK.
- FFmpeg - A complete, cross-platform solution to record, convert and stream audio and video.
- Theora - A free and open video compression format.
Web Application Framework
- 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]
- 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
- Expat - An XML parser library written in C.
- Libxml2 - The XML C parser and toolkit of Gnome.
- libxml++ - An XML Parser for C++.
- PugiXML - A light-weight, simple and fast XML parser for C++ with XPath support.
- RapidXml - An attempt to create the fastest XML parser possible, while retaining useability, portability and reasonable W3C compatibility.
- TinyXML - A simple, small, minimal, C++ XML parser that can be easily integrating into other programs.
- TinyXML2 - A simple, small, efficient, C++ XML parser that can be easily integrating into other programs.
- TinyXML++ - A completely new interface to TinyXML that uses MANY of the C++ strengths. Templates, exceptions, and much better error handling.
- Xerces-C++ - A validating XML parser written in a portable subset of C++.
Miscellaneous
Useful libraries or tools that don't fit in the categories above or maybe just not categorised yet
- C++ Format - Small, safe and fast formatting library for C++.
- casacore - A set of c++ core libraries derived from aips++.
- cxx-prettyprint - A pretty printing library for C++ containers.
- DynaPDF - An easy-to-use PDF generation library.
- HTTP Parser - A http request/response parser for C.
- libcpuid - A small C library for x86 CPU detection and feature extraction.
- libusb - A universal USB library which allows for portable access to USB devices.
- Remote Call Framework - Inter-process communication framework for C++.
- Serial Communication Library - Cross-platform, Serial Port library written in C++.
- SDS - Simple Dynamic Strings library for C.
- SLDR - Super Light DNS Resolver.
- SLRE - Super Light Regular Expression library.
- Stage - Mobile robot simulator.
- VarTypes - A feature-rich, object-oriented framework for managing variables in C++ / Qt4.
- ZBar - A barcode scanner library, which allows to scan photos/images/video streams for barcodes and return their value.
- CppVerbalExpressions - C++ regular expressions made easy.
- QtVerbalExpressions - This Qt lib is based off of the C++ VerbalExpressions library.
- TinyVM - A small, fast, lightweight virtual machine written in pure ANSI C.
- CarpVM - "interesting" VM in C. Let's see how this goes.
- PHP-CPP - A library to build PHP extensions with C++. website
Software
Software for creating a development environment.
Compiler
List of C/C++ compilers
- Clang - Developed by Apple.
- GCC - GNU Compiler Collection.
- Intel C++ Compiler - Developed by Intel.
- Microsoft Visual C++ - MSVC, developed by Microsoft.
- LLVM - Collection of modular and reusable compiler and toolchain technologies.
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.
- 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.
Debugger
List of C/C++ debuggers
- Comparison of debuggers - A list of Debuggers from Wikipedia.
- GDB - GNU Debugger.
- 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.
- Code::Blocks - A free C, C++ and Fortran IDE.
- Dev-C++ - A portable C/C++/C++11 IDE.
- Eclipse CDT - A fully functional C and C++ IDE based on the Eclipse platform.
- 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.
- Xcode - Developed by Apple.
- YouCompleteMe - YouCompleteMe is a fast, as-you-type, fuzzy-search code completion engine for Vim.
Buildsystem
- FASTBuild - high performance, open-source build system supporting highly scalable compilation, caching and network distribution.
- 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.
Static Code Analysis
List of tools for improving quality and reducing defects by code analysis
- Cppcheck - A tool for static C/C++ code analysis. - source
- OCLint - A static source code analysis tool to improve quality and reduce defects for C, C++ and Objective-C. - source
- List of tools for static code analysis - A list of tools for static code analysis from Wikipedia.
Resources
Various resources, such as books, websites, and articles for improving your C++ development skills and knowledge.
Articles
Fantastic C/C++ related articles.
- C++Now 2014 Presentations - Presentation materials presented at C++Now 2014.
- C++Now 2013 Presentations - Presentation materials presented at C++Now 2013.
- C++Now 2012 Presentations - Presentation materials presented at C++Now 2012.
Books
Fantastic C/C++ related books.
- The C++ Annotations - An in-depth guide on C++, intended for people with a good knowledge of C who want to make the transition to C++.
- Free C Books - vhf/free-programming-books/C.
- Free C++ Books - vhf/free-programming-books/C++.
- The Definitive C++ Book Guide and List - A collection of quality books and an approximate skill level.
Coding Style
- google-styleguide - Style guides for Google-originated open-source projects.
- Google C++ Style Guide
- GNU Coding Standard
Videos
Fantastic C/C++ related videos.
- Awesome C Programming Tutorials in Hi Def [HD] - A collection of detailed C Programming Language Tutorials for Beginners and New Programmers.
- C++ - by VoidRealms.
- C++ Qt Programming - by VoidRealms.
- C++ Programming Tutorials Playlist - thenewboston Official Buckys C++ Programming Tutorials Playlist.
- C++ Programming Tutorials from thenewboston - These are all of thenewboston's C++ programming tutorials.
- C++ GUI with Qt Playlist - Official Playlist for thenewboston C++ GUI with Qt tutorials.
- C Programming Tutorials - All of thenewboston's C programming tutorials are right here.
Websites
Useful C/C++ related websites.
- C++ reference - C++98, C++03, C++11, C++14 reference.
- cplusplus.com - The C++ Resources Network.
- Standard C++ - News, Status & Discussion about Standard C++.
Other Awesome Projects
Collection of useful codes, snippets, ...
- algorithms - Algorithms & Data Structures in C++.
- c-algorithms - C algorithms library.
- C/C++ Awesome Pack - Contains some awesome c++ codes, packed in one.
Other Awesome Lists
Other amazingly awesome lists
- lists - List of (awesome) lists curated on GitHub
- awesome-awesomeness - A curated list of awesome awesomeness.
- awesome - A curated list of awesome lists.
- free-programming-books - List of Freely Available Programming Books
- papers-we-love - Papers from the computer science community to read and discuss.
- awesome-php - Awesome PHP libraries, resources and shiny things.
- awesome-python - Awesome Python frameworks, libraries and software.
- awesome-sysadmin - Awesome open source sysadmin resources
- awesome-talks - A lot of screencasts, recordings of user group gatherings and conference talks.
- github-cheat-sheet - A list of cool features of Git and GitHub.
- ToolsOfTheTrade - Tools of The Trade, from Hacker News.
- cheatsheets.org - The largest collection of reference cards for developers.
- cheat-sheets.org - All cheat sheets, round-ups, quick reference cards, quick reference guides and quick reference sheets in one page.
- thefreecountry.com - A collection of free programming resources, free webmasters' resources, free security resources and free utilities.
Contributing
Please see CONTRIBUTING for details.