Awesome C/C++

A curated list of awesome C/C++ frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.

Standard Libraries

C++ Standard Library - including STL Containers, STL Aglorithm, STL Functional, etc.

Frameworks

C++ generic frameworks and libraries.

  • Apache C++ Standard Library - A collection of algorithms, containers, iterators, and other fundamental components.
  • ASL - Adobe Source Libraries provides peer-reviewed and portable C++ source libraries.
  • Boost - A large collection of generic C++ libraries.
  • BDE - The BDE Development Environment from Bloomberg Labs.
  • Cinder - A community-developed, free and open source library for professional-quality creative coding.
  • Cxxomfort - A small, header-only library that backports to C++03 some of the nifty C++11 goodies.
  • Dlib - A general purpose cross-platform C++ library designed using contract programming and modern C++ techniques.
  • ffead-cpp - Framework for Enterprise Application Development.
  • Folly - An open-source C++ library developed and used at Facebook.
  • JUCE - An all-encompassing C++ class library for developing cross-platform software.
  • libPhenom - libPhenom is an eventing framework for building high performance and high scalability systems in C.
  • LibSourcey - C++11 evented IO for real-time video streaming and high performance networking applications.
  • LibU - A multiplatform utility library written in C.
  • Loki - A C++ library of designs, containing flexible implementations of common design patterns and idioms.
  • MiLi - Minimal headers-only C++ Library.
  • openFrameworks - An open source C++ toolkit for creative coding.
  • Qt - A cross-platform application and UI framework.
  • 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++.
  • STXXL - Standard Template Library for Extra Large Data Sets.
  • Ultimate++ - A C++ cross-platform rapid application development framework.
  • Windows Template Library - A C++ library for developing Windows applications and UI components.
  • Yomm11 - Open multi-methods for C++11.

Artificial Intelligence

  • Evolving Objects - A template-based, ANSI-C++ evolutionary computation library which helps you to write your own stochastic optimization algorithms insanely fast.
  • Neu - A C++ 11 framework, collection of programming languages, and multipurpose software system designed for: the creation of artificial intelligence applications.

Asynchronous Event Loop

  • Boost.Asio - A cross-platform C++ library for network and low-level I/O programming.
  • libev - A full-featured and high-performance event loop that is loosely modelled after libevent, but without its limitations and bugs.
  • libevent - An event notification library.
  • libuv - Cross-platform asychronous I/O.

Audio

Audio, Sound, Music, Digitized Voice Libraries

Compression

Compression and Archiving Libraries

  • bzip2 - A freely available, patent free, high-quality data compressor.
  • LZ4 - Extremely Fast Compression algorithm.
  • LZMA - The default and general compression method of 7z format.
  • miniz - Single C source file Deflate/Inflate compression library with zlib-compatible API, ZIP archive reading/writing, PNG writing.
  • Minizip - Zlib with latest bug fixes that supports PKWARE disk spanning, AES encryption, and IO buffering.
  • Snappy - A fast compressor/decompressor.
  • ZLib - A very compact compression library for data streams.
  • ZZIPlib - Provides read access on ZIP-archives.

Concurrency

  • Boost.Compute - A C++ GPU Computing Library for OpenCL.
  • Bolt - A C++ template library optimized for GPUs.
  • Intel TBB - Intel® Threading Building Blocks.
  • 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.
  • LibTomCrypt - A fairly comprehensive, modular and portable cryptographic toolkit.
  • libsodium - P(ortable|ackageable) NaCl-based crypto library, opinionated and easy to use.
  • OpenSSL - A robust, commercial-grade, full-featured, and Open Source cryptography library.

Database

Database Libraries, SQL Servers, ODBC Drivers, and Tools

  • hiberlite - C++ Object-relational mapping for sqlite3.
  • LMDB - Very fast embedded key/value store with full ACID semantics.
  • 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

Game Engine

  • Cocos2d-x - A multi-platform framework for building 2d games, interactive books, demos and other graphical applications.
  • 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+.
  • 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.
  • wxWidgets - A C++ library that lets developers create applications for Windows, Mac OS X, Linux and other platforms with a single code base.

Graphics

  • Cairo - A 2D graphics library with support for multiple output devices.
  • CImg - A small, open source, C++ toolkit for image processing.
  • 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 2D Graphics Library.

Internationalization

  • IBM ICU - A set of C/C++ and Java libraries providing Unicode and Globalization support.
  • gettext - GNU `gettext’.

JSON

  • frozen - :star: 20+ - JSON parser and generator for C/C++.
  • Jansson - :star: 650+ - C library for encoding, decoding and manipulating JSON data.
  • jbson - :star: <10 - jbson is a library for building & iterating BSON data, and JSON documents in C++14.
  • JeayeSON - :star: 10+ - A very sane (header only) C++ JSON library.
  • JSON++ - :star: 130+ - A JSON parser in C++.
  • json11 - :star: 290+ - A tiny JSON library for C++11.
  • PicoJSON - :star: 170+ - A header-file-only, JSON parser serializer in C++.
  • qt-json - :star: 120+ - A simple class for parsing JSON data into a QVariant hierarchy and vice versa.
  • RapidJSON - :star: 170+ - A fast JSON parser/generator for C++ with both SAX/DOM style API.
  • YAJL - :star: 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 Computer Vision.
  • 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.

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.
  • 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++.
  • 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.
  • LiquidFun - A 2D physics engine for games.
  • 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++.
  • 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.
  • cereal - A C++11 library for serialization.
  • FlatBuffers - A Memory efficient serialization library.
  • MessagePack - Efficient binary serialization format “like JSON” for C/C++. - website
  • protobuf - Protocol Buffers - Google’s data interchange format.

Web Application Framework

  • CppCMS - A Free High Performance Web Development Framework (not a CMS).
  • Crow - Crow is C++ micro web framework (inspired by Python Flask).
  • Wt - A C++ library for developing web applications.

XML

  • 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.
  • Eigen - C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
  • 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.
  • 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.

Software

Software for creating a development environment.

Compilers

List of C/C++ compilers

Integrated Development Environments

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.

Resources

Various resources, such as books, websites, and articles for improving your C++ development skills and knowledge.

Articles

Fantastic C/C++ related articles.

Books

Fantastic C/C++ related books.

Videos

Fantastic C/C++ related videos.

Websites

Useful C/C++ related websites.

Other Awesome Projects

Collection of useful codes, snippets, ...

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.