A curated list of awesome C/C++ frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.http://fffaraz.github.io/awesome-cpp/
- Awesome C/C++
- Standard Libraries
- Frameworks
- Artificial Intelligence
- Asynchronous Event Loop
- Audio
- Biology
- BitTorrent
- CLI
- Compression
- Concurrency
- Containers
- Cryptography
- Database
- Debug
- Game Engine
- GUI
- Graphics
- Image Processing
- Internationalization
- Inter-process communication
- JSON
- Logging
- Machine Learning
- Math
- Multimedia
- Networking
- Physics
- Robotics
- Scientific Computing
- Scripting
- Serialization
- Video
- Virtual Machines
- 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
- The GNU C Library - The purpose of this manual is to tell you how to use the facilities of the GNU C Library.
Frameworks
C++ generic frameworks and libraries.
- Apache C++ Standard Library - STDCXX, A collection of algorithms, containers, iterators, and other fundamental components. [retired] [Apache2]
- APR - Apache Portable Runtime. Another library of cross-platform utility functions. [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. [Apache2]
- 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 - Electronic Arts Standard Template Library. [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 - A cross platform open source toolkit for creative coding in C++. [MIT] website
- Qt
⚡ - A cross-platform application and UI framework. [GPL/LGPL/Commercial] - 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++. [GPL2]
- 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]
- STLport - An exemplary version of STL. [Free]
- STXXL - Standard Template Library for Extra Large Data Sets. [Boost]
- Ultimate++ - A C++ cross-platform rapid application development framework. [BSD]
- uSTL - The small STL library. [MIT]
- Windows Template Library - A C++ library for developing Windows applications and UI components. [Public]
- Yomm11 - Open multi-methods for C++11. [Boost]
Artificial Intelligence
- ANNetGPGPU - A GPU (CUDA) based Artificial Neural Network library. [LGPL]
- 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]
- Recast/Detour - (3D) Navigation mesh generator and pathfinder, mostly for games. [zlib]
- TensorFlow - An open source software library for numerical computation using data flow graphs [Apache]
- tiny-cnn - A header only, dependency-free deep learning framework in C++11. [BSD]
- Veles - Distributed platform for rapid Deep learning application development. [Apache]
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]
- KFR - Fast, modern C++ DSP framework, FFT, FIR/IIR filters, Sample Rate Conversion. [GPL/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]
- SELA - SimplE Lossless Audio. [MIT]
- Speex - A free codec for free speech. Obsoleted by Opus. [BSD]
- Tonic - Easy and efficient audio synthesis in C++. [Unlicense]
- Vorbis - Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free, general-purpose compressed audio format. [BSD]
Biology
Bioinformatics, Genomics, Biotech
- libsequence - A C++ library for representing and analyzing population genetics data. [GPL]
- SeqAn - Algorithms and data structures for the analysis of sequences with the focus on biological data. [BSD/3-clause]
- Vcflib - A C++ library for parsing and manipulating VCF files. [MIT]
- Wham - Structural variants (SVs) in Genomes by directly applying association tests to BAM files. [MIT]
BitTorrent
- jech/dht - BitTorrent DHT library in C. [MIT]
- libtorrent (a.k.a. libtorrent-rasterbar) - An efficient feature complete C++ bittorrent implementation. [BSD]
- LibTorrent (a.k.a. libtorrent-rakshasa) - BitTorrent library. [GPL]
- libutp - uTorrent Transport Protocol library. [MIT]
CLI
Console/Terminal User Interface, Command Line Interface
- Boost.Program_options - A library to obtain program options via conventional methods such as command line and config file. [Boost]
- docopt.cpp - A library to generate option parser from docstring. [MIT/Boost]
- gflags - Commandline flags module for C++. [BSD]
- Ncurses - A terminal user interfaces. [MIT]
- termbox - A C library for writing text-based user interfaces. [BSD]
Compression
Compression and Archiving Libraries
- bzip2 - A freely available, patent free, high-quality data compressor. [BSD]
- 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. [PublicDomain] - 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]
- smaz - Small strings compression library. [BSD]
- Snappy - A fast compressor/decompressor. [BSD]
- ZLib - A very compact compression library for data streams. [zlib]
- zlib-ng - zlib for the "next generation" systems. Drop-In replacement with some serious optimizations. [zlib]
- ZZIPlib - Provides read access on ZIP-archives. [MPL/LGPL]
Concurrency
Concurrency and Multithreading
- ArrayFire - A general purpose GPU library. [BSD]
- Boost.Compute - A C++ GPU Computing Library for OpenCL. [Boost]
- Bolt - A C++ template library optimized for GPUs. [Apache2]
- ck - Concurrency primitives, safe memory reclamation mechanisms and non-blocking data structures. [BSD]
- CUB - CUB provides state-of-the-art, reusable software components for every layer of the CUDA programming mode. [New BSD]
- C++React - A reactive programming library for C++11. [Boost]
- Intel TBB - Intel® Threading Building Blocks. [GPL2 with runtime exception]
- junction - A library of concurrent data structures in C++. [BSD]
- libcds - A C++ library of Concurrent Data Structures. [BSD]
- Libclsph - An OpenCL based GPU accelerated SPH fluid simulation library. [MIT]
- moderngpu - moderngpu is a productivity library for general-purpose computing on GPUs. It is a header-only C++ library written for CUDA. The unique value of the library is in its accelerated primitives for solving irregularly parallel problems. [FreeBSD & Copyright, Sean Baxter]
- NCCL - Optimized primitives for collective multi-GPU communication. [BSD]
- OpenCL - The open standard for parallel programming of heterogeneous systems.
- OpenMP - The OpenMP API.
- RaftLib - The RaftLib C++ library, streaming/dataflow concurrency via C++ iostream-like operators [Apache2]
- Thrust - A parallel algorithms library which resembles the C++ Standard Template Library (STL). [Apache2]
- HPX - A general purpose C++ runtime system for parallel and distributed applications of any scale. [Boost]
- VexCL - A C++ vector expression template library for OpenCL/CUDA. [MIT]
Containers
- C++ B-tree - A template library that implements ordered in-memory containers based on a B-tree data structure. [Apache2]
- Hashmaps - Implementation of open addressing hash table algorithms in C++. [MIT]
- LSHBOX - A c++ toolbox of locality-sensitive hashing (LSH), provides several popular LSH algorithms, also support Python and MATLAB. [GPL]
Cryptography
Cryptography and Encryption Libraries
- Bcrypt - A cross platform file encryption utility. Encrypted files are portable across all supported operating systems and processors.
- BeeCrypt
- Botan - A crypto library for C++. [BSD-2]
- Crypto++ - A free C++ class library of cryptographic schemes. [Boost]
- GnuPG - A complete and free implementation of the OpenPGP standard. [GPL]
- GnuTLS - A secure communications library implementing the SSL, TLS and DTLS protocols. [LGPL2.1]
- Libgcrypt
- libmcrypt
- LibreSSL - A free version of the SSL/TLS protocol forked from OpenSSL in 2014. [?]
- libsodium - P(ortable|ackageable) NaCl-based crypto library, opinionated and easy to use. [ISC]
- LibTomCrypt - A fairly comprehensive, modular and portable cryptographic toolkit. [WTFPL]
- mbedTLS - Tiny crypto suite aimed at embedded development, previously known as PolarSSL. [Apache2]
- Nettle - A low-level cryptographic library. [LGPL]
- OpenSSL - A robust, commercial-grade, full-featured, and Open Source cryptography library. [Apache] websire
- retter - A collection of hash functions, ciphers, tools, libraries, and materials related to cryptography.
- s2n - An implementation of the TLS/SSL protocols. [Apache]
- Tiny AES128 in C - A small and portable implementation of the AES128 ECB encryption algorithm implemented in C. [PublicDomain]
Database
Database Libraries, SQL Servers, ODBC Drivers, and Tools
- hiberlite - C++ Object-relational mapping for sqlite3. [BSD]
- Hiredis - A minimalistic C client library for the Redis database. [BSD]
- LevelDB - A fast key-value storage library. [BSD]
- LMDB - Very fast embedded key/value store with full ACID semantics. [OpenLDAP]
- LMDB++ - C++11 wrapper for the LMDB embedded database library. [PublicDomain]
- MongoDB C Driver - MongoDB client library for C. [Apache2]
- MongoDB C++ Driver - C++ driver for MongoDB. [Apache2]
- MongoDB Libbson - A BSON utility library. [Apache2]
- MySQL++ - A C++ wrapper for MySQL's C API. [LGPL]
- redis3m - Wrapper of hiredis with clean C++ interface, supporting sentinel and ready to use patterns. [Apache2]
- RocksDB - Embedded key-value store for fast storage from facebook. [BSD]
- SQLite - A completely embedded, full-featured relational database in a few 100k that you can include right into your project. [PublicDomain]
- upscaledb - An embedded "typed" key/value store with a built-in query interface. [GPLv3]
Debug
Debugging Libraries, Memory Leak and Resource Leak Detection, Unit Testing
- benchmark - Google provided small microbenchmark support library. [Apache2]
- Boost.Test - Boost Test Library. [Boost]
- doctest - The lightest feature rich C++ single header testing framework. [MIT]
- Catch - A modern, C++-native, header-only, framework for unit-tests, TDD and BDD. [Boost]
- Celero - C++ Benchmarking Framework. [Apache2]
- CUTE - C++ Unit Testing Easier. [LGPL3]
- CMocka - unit testing framework for C with support for mock objects. [Apache2]
- CppUnit - C++ port of JUnit. [LGPL2]
- CTest - The CMake test driver program. [BSD]
- Google Mock - A library for writing and using C++ mock classes. [BSD]
- Google Test - Google C++ Testing Framework. [BSD]
- ig-debugheap - Multiplatform debug heap useful for tracking down memory errors. [BSD]
- libtap - Write tests in C. [GPL2]
- MemTrack - Tracking memory allocations in C++.
- microprofile - Profiler with web-view for multiple platforms. [PublicDomain]
- minUnit - A minimal unit testing framework for C written using only 2 macros. [PublicDomain]
- Mockator - Eclipse CDT plug-in for C++ Seams and Mock Objects.
- Remotery - Single C File Profiler with Web Viewer. [Apache2]
- UnitTest++ - A lightweight unit testing framework for C++. [MIT/X Consortium license]
- VLD - Visual Leak Detector. A free, robust, open-source memory leak detection system for Visual C++.
Game Engine
- Allegro - A cross-platform library mainly aimed for video games and multimedia programming. [zlib]
- Cocos2d-x - A multi-platform framework for building 2d games, interactive books, demos and other graphical applications. [MIT]
- delta3d - A robust simulation platform. [LGPL2]
- GamePlay - A cross-platform native C++ game framework for creating 2D/3D mobile and desktop games. [Apache2]
- Godot - A fully featured, open source, MIT licensed, game engine. [MIT]
- Grit - Community project to build a free game engine for implementing open world 3D games. [MIT]
- Oxygine - A cross-platform 2D C++ game engine. [MIT]
- Panda3D - A game engine, a framework for 3D rendering and game development for Python and C++ programs. [Modified BSD] website
- Polycode - A cross-platform framework for creative code in C++ (with Lua bindings). [MIT] website
- Torque2D - An open-source and cross-platform C++ engine built for 2D game development. [MIT] website
- Torque3D - An open-source C++ engine built for 3D game development. [MIT] website
GUI
Graphic User Interface
- CEGUI - Flexible, cross-platform GUI library.
- FLTK - Fast, light, cross-platform C++ GUI toolkit. [GPL2]
- GacUI - GPU Accelerated C++ User Interface, with WYSIWYG developing tools, XML supports, built-in data binding and MVVM features. [Ms-PL]
- GTK+ - A multi-platform toolkit for creating graphical user interfaces. [LGPL]
- gtkmm - The official C++ interface for the popular GUI library GTK+. [LGPL]
- imgui - Immediate Mode Graphical User Interface with minimal dependencies. [MIT]
- libRocket - libRocket is a C++ HTML/CSS game interface middleware. [MIT]
- MyGUI - Fast, flexible and simple GUI. [MIT]
- QCustomPlot - Qt plotting widget without further dependencies. [GPLv3]
- 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]
- PDCurses - Public domain curses library with both source code and pre-compiled library available. [PublicDomain]
- Sciter - Sciter is an embeddable HTML/CSS/scripting engine aimed to be used as an UI layer of modern desktop applications. [Free/Commercial]
- 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]
Graphics
- bgfx - A cross-platform rendering library. [BSD]
- Cairo - A 2D graphics library with support for multiple output devices. [LGPL2 or Mozilla MPL]
- GLFW - A simple, cross-platform OpenGL wrangling library. [zlib/libpng]
- Horde3D - A small 3D rendering and animation engine. [EPL]
- Irrlicht - A high performance realtime 3D engine written in C++. [zlib]
- magnum - C++11 and OpenGL 2D/3D graphics engine. [MIT] website
- Ogre 3D
⚡ - A scene-oriented, real-time, flexible 3D rendering engine (as opposed to a game engine) written in C++. [MIT] - OpenSceneGraph - An open source high performance 3D graphics toolkit. [OSGPL]
- OpenSubdiv - Pixar's library for evaluating and rendering subdivision surfaces on CPU and GPU. [Modified Apache2]
- OpenVDB - Library and tools for storing, editing, and rendering volumetric datasets. [MPL2]
- Panda3D - A framework for 3D rendering and game development for Python and C++. [BSD]
- 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] webpage
- urho3d - Cross-platform rendering and game engine. [Many different, mostly MIT]
Image Processing
- Boost.GIL - Generic Image Library.
- 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]
- GD - GD Graphics Library, famously used in PHP for image loading/manipulation & thumbnail generation. [custom permissive license, requires mention in user docs] website
- GDCM - Grassroots DICOM library.
- ITK - An open-source, cross-platform system for image analysis. [Apache2 from ITK 4.0]
- libvips - A fast image processing library with low memory needs. [LGPL] website
- Magick++ - ImageMagick program interfaces for C++. [Apache2]
- MagickWnd - ImageMagick program interfaces for C. [Apache2]
- OpenCV
⚡ - Open source computer vision. [BSD] - OpenEXR - Cross-platform library for high dynamic range imaging. [Modified BSDF]
- OpenImageIO - Powerful image and texture wrangling library with support for a wide number of common lossy and RAW formats. [Modified BSD]
- tesseract-ocr - An OCR engine. [Apache2]
- Video++ - A C++14 high performance video and image processing library. [MIT]
- VIGRA - A generic C++ computer vision library for image analysis. [MIT X11]
- VTK - Open-source, freely available software system for 3D computer graphics, image processing and visualization. [BSD]
Internationalization
- gettext - GNU `gettext'. [GPL2]
- IBM ICU - A set of C/C++ and Java libraries providing Unicode and Globalization support. [ICU]
- libiconv - An encoding conversion library between different character encodings. [GPL]
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]
- Cap'n Proto - Fast data interchange format and capability-based RPC system. [MIT]
- gRPC - A high performance, open source, general-purpose RPC framework. [BSD] website
- libjson-rpc-cpp - JSON-RPC framework for C++ servers and clients. [MIT]
- nanomsg - A simple high-performance implementation of several "scalability protocols". [MIT] website
- simple-rpc-cpp - A simple RPC wrapper generator to C/C++ functions. [BSD]
- WAMP - Provides RPC and pub/sub messaging patterns. (various implementations, various languages)
- xmlrpc-c - A lightweight RPC library based on XML and HTTP. [BSD]
- ZeroMQ - High-speed, modular asynchronous communication library. [LGPL]
JSON
- Boost.PropertyTree - A property tree parser/generator that can be used to parse XML/JSON/INI/Info files. [Boost]
- 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]
- json
⚡ - JSON for Modern C++. [MIT] - JSON++ - A JSON parser in C++. [MIT]
- JsonCpp - A C++ library for interacting with JSON. [MIT]
- json-parser - Very low footprint JSON parser written in portable ANSI C. [BSD]
- json11 - A tiny JSON library for C++11. [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]
- libjson - Lightweight JSON library. [?]
- LIBUCL
⚡ - Universal configuration library parser [?] - PicoJSON - A header-file-only, JSON parser serializer in C++. [BSD]
- qt-json - A simple class for parsing JSON data into a QVariant hierarchy and vice versa. [GPLv3]
- 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] - ujson - µjson is a a small, C++11, UTF-8, JSON library. [MIT]
- YAJL - A fast streaming JSON parsing library in C. [ISC]
Logging
- Blackhole - Header only 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]
- easyloggingpp - Single header only C++ logging library. [MIT] website
- G3log - Asynchronous logger with Dynamic Sinks. [PublicDomain]
- Log4cpp - A library of C++ classes for flexible logging to files, syslog, IDSA and other destinations. [LGPL]
- log4cplus - A simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. [BSD & Apache2]
- plog - Portable and simple C++ logging library. [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]
Machine Learning
- Caffe - A fast framework for neural networks. [BSD]
- CCV - C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library. [BSD]
- Fido - A highly-modular C++ machine learning library for embedded electronics and robotics. [MIT] website
- MeTA - A modern C++ data sciences toolkit. [MIT] website
- Minerva - A fast and flexible system for deep learning. [Apache2]
- mlpack - A scalable c++ machine learning library. [LGPLv3]
- OpenCV
⚡ - Open Source Computer Vision Library. [BSD] website - Recommender - C library for product recommendations/suggestions using collaborative filtering (CF). [BSD]
- SHOGUN - The Shogun Machine Learning Toolbox. [GPLv3]
- sofia-ml - The suite of fast incremental algorithms for machine learning. [Apache2]
Math
- Apophenia - A C library for statistical and scientific computing [GPL2]
- Armadillo - A high quality C++ linear algebra library, aiming towards a good balance between speed and ease of use. The syntax (API) is deliberately similar to Matlab. [MPL2]
- blaze - high-performance C++ math library for dense and sparse arithmetic. [BSD]
- Boost.Multiprecision - provides higher-range/precision integer, rational and floating-point types in C++, header-only or with GMP/MPFR/LibTomMath backends. [Boost]
- ceres-solver - C++ library for modeling and solving large complicated nonlinear least squares problems from google. [BSD]
- CGal - Collection of efficient and reliable geometric algorithms. [LGPL&GPL]
- cml - free C++ math library for games and graphics. [Boost]
- Eigen - A high-level C++ library of template headers for linear algebra, matrix and vector operations, numerical solvers and related algorithms. [MPL2]
- GLM - Header-only C++ math library that matches and inter-operates with OpenGL's GLSL math. [MIT]
- GMTL - Graphics Math Template Library is a collection of tools implementing Graphics primitives in generalized ways. [GPL2]
- GMP - A C/C++ library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating-point numbers. [LGPL3 & GPL2]
- MIRACL - A Multiprecision Integer and Rational Arithmetic Cryptographic Library. [AGPL]
- NT2 - A SIMD-optimized numerical template library that provides an interface with MATLAB-like syntax. [Boost]
- LibTomMath - A free open source portable number theoretic multiple-precision integer library written entirely in C. [PublicDomain & WTFPL] website
- QuantLib - A free/open-source library for quantitative finance. [Modified BSD] website
- Versor - A (fast) Generic C++ library for Geometric Algebras, including Euclidean, Projective, Conformal, Spacetime (etc).
Multimedia
- GStreamer - A library for constructing graphs of media-handling components. [LGPL]
- LIVE555 Streaming Media - Multimedia streaming library using open standard protocols (RTP/RTCP, RTSP, SIP). [LGPL]
- libVLC - libVLC (VLC SDK) media framework. [GPL]
- QtAv - A multimedia playback framework based on Qt and FFmpeg to write a player easily. [LGPL] website
- SDL
⚡ - Simple DirectMedia Layer. [zlib] - SFML
⚡ - Simple and Fast Multimedia Library. [zlib] website
Networking
- ACE - An OO Network Programming Toolkit in C++. [?MIT?]
- Boost.Asio
⚡ - A cross-platform C++ library for network and low-level I/O programming. [Boost] - C++ REST SDK - C++ REST SDK (previously named Casablanca). [Apache2]
- Restbed - C++11 Asynchronous RESTful framework. [AGPL]
- cpp-netlib - A collection of open-source libraries for high level network programming. [Boost]
- cpr - A modern C++ HTTP requests library with a simple but powerful interface. Modeled after the Python Requests module. [MIT] website
- Dyad.c - Asynchronous networking for C. [MIT]
- libcurl - Multiprotocol file transfer library. [MIT/X derivate license]
- libjingle - Google talk voice and P2P interoperability library. [BSD]
- Mongoose - Extremely lightweight webserver. [GPL2]
- Muduo - A C++ non-blocking network library for multi-threaded server in Linux. [BSD]
- net_skeleton - TCP client/server library for C/C++. [GPL2]
- nope.c - A C language-based ultra-light software platform for scalable server-side and networking applications. Think node.js for C programmers. [GPL2]
- Onion - HTTP server library in C designed to be lightweight and easy to use. [Apache2/GPL2]
- POCO
⚡ - C++ class libraries and frameworks for building network- and internet-based applications that run on desktop, server, mobile and embedded systems. [Boost] website - Proxygen - Facebook's collection of C++ HTTP libraries including an easy to use HTTP server. [BSD]
- RakNet - A cross platform, open source, C++ networking engine for game programmers. [BSD]
- Silicon - A high performance, middleware oriented C++14 http web framework. [MIT]
- Tufão - An asynchronous web framework for C++ built on top of Qt. [LGPL2]
- WebSocket++ - C++/Boost Asio based websocket client/server library. [BSD]
Physics
Dynamics simulation engines
- Box2D - A 2D physics engine for games. [BSD-like]
- Bullet - A 3D physics engine for games. [zlib] website
- Chipmunk - A fast and lightweight 2D game physics library. [MIT] website
- LiquidFun - A 2D physics engine for games. [BSD-like]
- Newton Dynamics - An integrated solution for real time simulation of physics environments. [zlib]
- ODE - Open Dynamics Engine - An open source, high performance library for simulating rigid body dynamics. [BSD&LGPL]
- ofxBox2d - openFrameworks wrapper for Box2D. [BSD-like]
- Simbody - High-performance C++ multibody dynamics/physics library for simulating articulated biomechanical and mechanical systems like vehicles, robots, and the human skeleton. [Apache2]
Robotics
- MOOS-IvP - A set of open source C++ modules for providing autonomy on robotic platforms, in particular autonomous marine vehicles.
- MRPT - Mobile Robot Programming Toolkit. [BSD]
- PCL - Point Cloud Library is a standalone, large scale, open project for 2D/3D image and point cloud processing [BSD] website
- Robotics Library (RL) - A self-contained C++ library for robot kinematics, motion planning and control. [BSD]
- RobWork - A collection of C++ libraries for simulation and control of robot systems. [Apache2]
- ROS - Robot Operating System provides libraries and tools to help software developers create robot applications. [BSD]
Scientific Computing
- FFTW - A C library for computing the DFT in one or more dimensions. [GPL]
- GSL - GNU scientific library. [GPL]
- Trilinos - High performance PDE solvers. [BSD]
Scripting
- ChaiScript - An easy to use embedded scripting language for C++. [BSD] website
- Duktape - An embeddable Javascript engine with compact footprint. [MIT] website
- Lua - A minimal and fast scripting engine for configuration files and basic application scripting. [MIT]
- luacxx - C++11 API for creating Lua bindings. [MIT]
- SWIG - A wrapper/interface Generator that let you link your c++ code to Javascript, Perl, PHP, Python, Tcl and Ruby. [GPL/Output not licensed]
- V7 - An embedded JavaScript engine. [GPL2]
- V8 - A fast JavaScript engine by Google that can be embedded into any C++ application. [BSD]
- ChakraCore -A JavaScript engine by Microsoft that can be embedded into nodejs. [MIT]
Serialization
- cereal - A C++11 library for serialization. [BSD]
- cppcodec - Header-only C++11 library to encode/decode base64, base32 and hex with consistent, flexible API. [MIT]
- 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]
- protobuf-c - Protocol Buffers implementation in C. [BSD]
- SimpleBinaryEncoding - encoding and decoding application messages in binary format for low-latency applications. [Apache2]
Video
- libvpx - VP8/VP9 Codec SDK. [BSD]
- FFmpeg - A complete, cross-platform solution to record, convert and stream audio and video. [LGPL2/GPL2]
- libde265 - Open h.265 video codec implementation. [LGPL] website
- OpenH264 - Open Source H.264 Codec. [BSD] website
- Theora - A free and open video compression format. [BSD]
Virtual Machines
- CarpVM - "interesting" VM in C. Let's see how this goes. [GPLv3]
- MicroPython - Aims to put an implementation of Python 3.x on a microcontroller. [MIT]
- TinyVM - A small, fast, lightweight virtual machine written in pure ANSI C. [MIT]
Web Application Framework
- Civetweb - Provides easy to use, powerful, C/C++ embeddable web server with optional CGI, SSL and Lua support. [MIT]
- 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]
- TreeFrog Framework - High-speed and full-stack web application framework based on C++ and Qt, which supports HTTP and WebSocket protocol (with O/R mapping). [BSD] website
- 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
- Boost.PropertyTree - A property tree parser/generator that can be used to parse XML/JSON/INI/Info files. [Boost]
- Expat - An XML parser library written in C. [MIT]
- Libxml2 - The XML C parser and toolkit of Gnome. [MIT]
- libxml++ - An XML Parser for C++. [LGPL2]
- PugiXML - A light-weight, simple and fast XML parser for C++ with XPath support. [MIT]
- RapidXml - An attempt to create the fastest XML parser possible, while retaining useability, portability and reasonable W3C compatibility. [Boost]
- TinyXML - A simple, small, minimal, C++ XML parser that can be easily integrating into other programs. [zlib]
- TinyXML2 - A simple, small, efficient, C++ XML parser that can be easily integrating into other programs. [zlib]
- TinyXML++ - A completely new interface to TinyXML that uses MANY of the C++ strengths. Templates, exceptions, and much better error handling. [MIT]
- Xerces-C++ - A validating XML parser written in a portable subset of C++. [Apache2]
Miscellaneous
Useful libraries or tools that don't fit in the categories above or maybe just not categorised yet
- access_profiler - A tool to count accesses to member variables in c++ programs. [GPL3]
- American fuzzy lop a.k.a. afl-fuzz - Crazy fuzzing tool that automatically discovers bugs given time and minimal example input. [Apache2]
- Better Enums - Reflective enums (to string, iteration). Single header. [BSD] website
- Better String - An alternative to the string library for C which is more functional and does not have buffer overflow overrun problems. Also includes a C++ wrapper. [BSD, GPL2]
- Boost.Signals - An implementation of a managed signals and slots system. [Boost]
- C++ Format - Small, safe and fast formatting library for C++. [BSD]
- FastFormat - Fast, Safe C++ Formatting inspired by log4j and Pantheios [Simplified BSD]
- casacore - A set of c++ core libraries derived from aips++. [LGPL]
- CppVerbalExpressions - C++ regular expressions made easy. [MIT]
- QtVerbalExpressions - This Qt lib is based off of the C++ VerbalExpressions library. [MIT]
- c-smart-pointers - Smart pointers for the (GNU) C programming language. [MIT]
- cxx-prettyprint - A pretty printing library for C++ containers. [Boost]
- DynaPDF - An easy-to-use PDF generation library. [Commercial]
- gcc-poison - A simple header file for developers to ban unsafe C/C++ functions from applications.
- HTTP Parser
⚡ - A http request/response parser for C. [MIT] - Klib - Small and lightweight implementations of common algorithms and data structures. [MIT]
- libsigc++ - A typesafe callback system for standard C++. [LGPL]
- libcpuid - A small C library for x86 CPU detection and feature extraction. [BSD]
- libevil - The Evil License Manager. [GPLv3]
- libnih - A lightweight library of C functions and structures. [GPL2.1]
- libusb - A universal USB library which allows for portable access to USB devices. [LGPL2]
- Mach7 - A Pattern-matching library for C++. [BSD]
- PCRE - A regular expression C library inspired by the regular expression capabilities in Perl. [BSD]
- RE2 - A software library for regular expressions via a finite-state machine using automata theory.
- PHP-CPP - A library to build PHP extensions with C++. [Apache2] website
- Remote Call Framework - Inter-process communication framework for C++. [GPL2/Commercial]
- Scintilla - A free source code editing component. [MIT]
- SDS - Simple Dynamic Strings library for C. [BSD]
- semver.c - A semver parser and render in ANSI C. [MIT]
- Serial Communication Library - Cross-platform, Serial Port library written in C++. [MIT]
- sigslot - C++ Signal/Slot Library. [PublicDomain]
- SLDR - Super Light DNS Resolver. [GPL2/Commercial]
- SLRE - Super Light Regexp engine for C/C++. [GPL2/Commercial]
- Stage - Mobile robot simulator. [GPL2]
- stb - A range of single-file libraries for C/C++. [PublicDomain]
- ub-canaries - A collection of C/C++ programs that try to get compilers to exploit undefined behavior.
- VarTypes - A feature-rich, object-oriented framework for managing variables in C++ / Qt4. [LGPL]
- ZBar - A barcode scanner library, which allows to scan photos/images/video streams for barcodes and return their value. [LGPL2]
- ZXing - An open-source, multi-format 1D/2D barcode image processing library implemented in Java, with ports to other languages. [Apache]
Software
Software for creating a development environment.
Compiler
List of C/C++ compilers
- 8cc - A Small C Compiler.
- c - Compile and execute C "scripts" in one go! [MIT]
- Clang - A C compiler for LLVM. Supports C++11/14/1z C11. Developed by LLVM Team. [NCSA]
- GCC - GNU Compiler Collection. Supports C++11/14/1z C11 and OpenMP. [GNU GPL3]
- PCC - A very old C compiler. Supports C99.
- Intel C++ Compiler - Developed by Intel.
- LLVM - Collection of modular and reusable compiler and toolchain technologies.
- Microsoft Visual C++ - MSVC, developed by Microsoft.
- Open WatCom - Watcom C, C++, and Fortran cross compilers and tools. [Sybase Open Watcom Public License]
- Oracle Solaris Studio - C, C++ and Fortran compiler for SPARC and x86. Supports C++11. Available on Linux and Solaris. [OTN Developer License]
- TCC - Tiny C Compiler. [LGPL]
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.
- coliru - Online compiler/shell with support for various C++ compilers.
- Compiler Explorer - An interactive compiler with assembly output available.
- 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.
- Rextester - Online compiler which provides several compilers(Clang, GCC, MSVC) and several editors.
- Rise4Fun - Online Visual C++ compiler.
- Wandbox - An online Clang/GCC compiler with Boost available.
Debugger
List of C/C++ debuggers
- Comparison of debuggers - A list of Debuggers from Wikipedia.
- GDB - GNU Debugger.
- LLDB - The LLDB Debugger.
- Metashell - An interactive template metaprogramming shell which includes the MDB metadebugger.
- 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.
- Anjuta DevStudio - The GNOME IDE. [GPL3]
- AppCode - an IDE for Objective-C, C, C++, and JavaScript development built on JetBrains’ IntelliJ IDEA platform.
- Cevelop - Cross-platform C/C++ IDE based on Eclipse CDT with additional plug-ins.
- CLion - Cross-platform C/C++ IDE from JetBrains.
- Code::Blocks - A free C, C++ and Fortran IDE.
- CodeLite - Another cross-plaform, free C/C++ IDE. [GPL2 with an exception for plugins]
- color_coded - A vim plugin for libclang-based highlighting. [MIT]
- Dev-C++ - A portable C/C++/C++11 IDE.
- Eclipse CDT - A fully functional C and C++ IDE based on the Eclipse platform.
- Geany - Small, fast, cross-platform IDE. [GPL]
- IBM VisualAge - A family of computer integrated development environments from IBM.
- Irony-mode - A C/C++ minor mode for Emacs powered by libclang.
- juCi++ - Cross-platform, lightweight C++ IDE with libclang integration. [MIT]
- 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. - 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.
Build Systems
- Bear - A tool to generate compilation database for clang tooling.
- Biicode - Simple, file-based dependency manager.
- CMake - Cross-platform free and open-source software for managing the build process of software using a compiler-independent method. [BSD]
- CPM - A C++ Package Manager based on CMake and Git.
- FASTBuild - High performance, open-source build system supporting highly scalable compilation, caching and network distribution.
- MesonBuild - An open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible.
- Ninja - A small build system with a focus on speed.
- Scons - A software construction tool configured with a Python script.
- Sconsolidator - Scons build system integration for Eclipse CDT.
- 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.
- Premake - A tool configured with a Lua script to generate project files for Visual Studio, GNU Make, Xcode, Code::Blocks, and more across Windows, Mac OS X, and Linux.
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
- include-what-you-use - A tool for use with clang to analyze includes in C and C++ source files.
- OCLint - A static source code analysis tool to improve quality and reduce defects for C, C++ and Objective-C. - source
- Clang Static Analyzer - A source code analysis tool that finds bugs in C, C++, and Objective-C programs.
- Linticator - Eclipse CDT integration of Pc-/FlexeLint.
- List of tools for static code analysis - A list of tools for static code analysis from Wikipedia.
Coding Style Tools
- ClangFormat - A tool to format C/C++/Obj-C code.
- Clang-Tidy - Clang-based C++ linter tool.
- Uncrustify - Code beautifier.
Resources
Various resources, such as books, websites, and articles for improving your C++ development skills and knowledge.
API Design
Articles
Fantastic C/C++ related articles.
- CppCon 2015 Speaker Materials - Speaker materials from CppCon 2015.
- CppCon 2014 Speaker Materials - Speaker materials from CppCon 2014.
- C++Now 2016 Presentations - Presentation materials for C++Now 2016.
- C++Now 2015 Presentations - Presentation materials presented at C++Now 2015.
- 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.
- List of Free C/C++ Books
- Free C Books - vhf/free-programming-books/C.
- Free C++ Books - vhf/free-programming-books/C++.
- cppbestpractices - Collaborative Collection of C++ Best Practices.
Coding Style
- C++ Core Guidelines - "Official" set of C++ guidelines, reviewed by the author of C++.
- C++ Dos and Don'ts - The Chromium Projects > For Developers > Coding Style > C++ Dos and Don'ts.
- google-styleguide - Style guides for Google-originated open-source projects.
- Google C++ Style Guide
- GNU Coding Standard
- Linux kernel coding style
- LLVM Coding Standards
Talks
- CppCon Talks
⚡ - The C++ conference. - Quick game development with C++11/C++14 - CppCon 2014 talk by Vittorio Romeo.
- Presentation on Hana for C++Now 2015
Videos
Fantastic C/C++ related videos.
- List of C/C++ YouTube 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.
- Bo Qian's playlist - Boost Library, C++ Standard Library, Modern C++, Advanced C++, Advanced STL, ...
Websites
Useful C/C++ related websites.
- Standard C++
⚡ - News, Status & Discussion about Standard C++. - CppCon - The C++ Conference.
- C++ reference - C++98, C++03, C++11, C++14 reference.
- cplusplus.com - The C++ Resources Network.
- C FAQ - C frequently asked questions.
- C++ FAQ - C++ frequently asked questions.
- C++ FQA Lite - C++ frequently questioned answers.
- Guru of the Week - A regular series of C++ programming problems created and written by Herb Sutter.
- Meeting C++
- C++ Quiz - C++ quiz in which you propose to find errors in code fragments of open source projects.
- Udemy C++ Courses and Tutorials
- C++ Hints - Every business day hints about most often C/C++ mistakes and ways to solve them from PVS-Studio Team.
Weblogs
Useful C/C++ related weblogs.
- Coding For Speed - Coding For Speed DOT COM, Less Execution Time.
- Eric Niebler
- Sticky Bits
- Paul Fultz II's Blog
- ridiculousfish - Will It Optimize?
- Embedded in Academia
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.
- Awesome C/C++ - getAwesomeness()'s mirror.
- Awesome C/C++ - LibHunt's mirror.
- Awesome C 1
- Awesome C 2
- free-programming-books - List of Freely Available Programming Books.
- Inqlude - The Qt library archive.
- papers-we-love - Papers from the computer science community to read and discuss.
- awesome-algorithms - A curated list of awesome places to learn and/or practice algorithms.
- awesome-talks - A lot of screencasts, recordings of user group gatherings and conference talks.
- Projects - A list of practical projects that anyone can solve in any programming language.
- Awesome interview questions - A list of lists of interview questions for the most popular technologies, including C/C++.
from https://github.com/fffaraz/awesome-cpp
-----------------------
C++ 资源大全中文版
我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。awesome-cpp 就是 fffaraz 发起维护的 C++ 资源列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。
Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大。这也是我们发起这个开源项目的初衷。
我们要做什么?
- 基于 awesome-cpp 资源列表,我们将对各个资源项进行编译整理。
- 整理后的内容,将收录在伯乐在线资源频道。可参考已整理的内容:
如何参与本项目?
从下面的目录来看,本项目的工作量小不了,所以非常期待能有更多程序员一起来参与。
不过加入前,有几个小要求:
- 英文还不错,能读懂英文并用自己的话复述;
- 有 C++ 开发经验;
如有兴趣,请加 QQ:50872495。加 Q 时请注明「C++大全」
本项目的参与者
- 维护者:tangyouhua
- 贡献者:JingerJoe、、You
注:名单不分排名,不定期补充更新
奖励计划
虽然奖励可能并不是你加入的主要原因,但还是有必要提一下:
- 整理超过 20 个资源后,可在伯乐在线上开通打赏;
- 每整理 20 个资源,有机会获得技术书籍或各种有意思的创意、极客产品;
- 奖励详情
标准库
C++标准库,包括了STL容器,算法和函数等。
- C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。
- Standard Template Library:标准模板库
- C POSIX library : POSIX系统的C标准库规范
- ISO C++ Standards Committee :C++标准委员会
框架
C++通用框架和库
- Apache C++ Standard Library:是一系列算法,容器,迭代器和其他基本组件的集合
- ASL :Adobe源代码库提供了同行的评审和可移植的C++源代码库。
- Boost :大量通用C++库的集合。
- BDE :来自于彭博资讯实验室的开发环境。
- Cinder:提供专业品质创造性编码的开源开发社区。
- Cxxomfort:轻量级的,只包含头文件的库,将C++ 11的一些新特性移植到C++03中。
- Dlib:使用契约式编程和现代C++科技设计的通用的跨平台的C++库。
- EASTL :EA-STL公共部分
- ffead-cpp :企业应用程序开发框架
- Folly:由Facebook开发和使用的开源C++库
- JUCE :包罗万象的C++类库,用于开发跨平台软件
- libPhenom:用于构建高性能和高度可扩展性系统的事件框架。
- LibSourcey :用于实时的视频流和高性能网络应用程序的C++11 evented IO
- LibU : C语言写的多平台工具库
- Loki :C++库的设计,包括常见的设计模式和习语的实现。
- MiLi :只含头文件的小型C++库
- openFrameworks :开发C++工具包,用于创意性编码。
- Qt :跨平台的应用程序和用户界面框架
- Reason :跨平台的框架,使开发者能够更容易地使用Java,.Net和Python,同时也满足了他们对C++性能和优势的需求。
- ROOT :具备所有功能的一系列面向对象的框架,能够非常高效地处理和分析大量的数据,为欧洲原子能研究机构所用。
- STLport:是STL具有代表性的版本
- STXXL:用于额外的大型数据集的标准模板库。
- Ultimate++ :C++跨平台快速应用程序开发框架
- Windows Template Library:用于开发Windows应用程序和UI组件的C++库
- Yomm11 :C++11的开放multi-methods.
人工智能
- btsk :游戏行为树启动器工具
- Evolving Objects:基于模板的,ANSI C++演化计算库,能够帮助你非常快速地编写出自己的随机优化算法。
- Neu:C++11框架,编程语言集,用于创建人工智能应用程序的多用途软件系统。
异步事件循环
- Boost.Asio:用于网络和底层I/O编程的跨平台的C++库。
- libev :功能齐全,高性能的时间循环,轻微地仿效libevent,但是不再像libevent一样有局限性,也修复了它的一些bug。
- libevent :事件通知库
- libuv :跨平台异步I/O。
音频
音频,声音,音乐,数字化音乐库
- FMOD :易于使用的跨平台的音频引擎和音频内容的游戏创作工具。
- Maximilian :C++音频和音乐数字信号处理库
- OpenAL :开源音频库---跨平台的音频API
- Opus:一个完全开放的,免版税的,高度通用的音频编解码器
- Speex:免费编解码器,为Opus所废弃
- Tonic: C++易用和高效的音频合成
- Vorbis: Ogg Vorbis是一种完全开放的,非专有的,免版税的通用压缩音频格式。
生态学
生物信息,基因组学和生物技术
- libsequence:用于表示和分析群体遗传学数据的C++库。
- SeqAn:专注于生物数据序列分析的算法和数据结构。
- Vcflib :用于解析和处理VCF文件的C++库
- Wham:直接把联想测试应用到BAM文件的基因结构变异。
压缩
压缩和归档库
- bzip2:一个完全免费,免费专利和高质量的数据压缩
- doboz:能够快速解压缩的压缩库
- PhysicsFS:对各种归档提供抽象访问的库,主要用于视频游戏,设计灵感部分来自于Quake3的文件子系统。
- KArchive:用于创建,读写和操作文件档案(例如zip和 tar)的库,它通过QIODevice的一系列子类,使用gzip格式,提供了透明的压缩和解压缩的数据。
- LZ4 :非常快速的压缩算法
- LZHAM :无损压缩数据库,压缩比率跟LZMA接近,但是解压缩速度却要快得多。
- LZMA :7z格式默认和通用的压缩方法。
- LZMAT :及其快速的实时无损数据压缩库
- miniz:单一的C源文件,紧缩/膨胀压缩库,使用zlib兼容API,ZIP归档读写,PNG写方式。
- Minizip:Zlib最新bug修复,支持PKWARE磁盘跨越,AES加密和IO缓冲。
- Snappy :快速压缩和解压缩
- ZLib :非常紧凑的数据流压缩库
- ZZIPlib:提供ZIP归档的读权限。
并发性
并发执行和多线程
- Boost.Compute :用于OpenCL的C++GPU计算库
- Bolt :针对GPU进行优化的C++模板库
- C++React :用于C++11的反应性编程库
- Intel TBB :Intel线程构件块
- Libclsph:基于OpenCL的GPU加速SPH流体仿真库
- OpenCL :并行编程的异构系统的开放标准
- OpenMP:OpenMP API
- Thrust :类似于C++标准模板库的并行算法库
- HPX :用于任何规模的并行和分布式应用程序的通用C++运行时系统
- VexCL :用于OpenCL/CUDA 的C++向量表达式模板库。
容器
- C++ B-tree :基于B树数据结构,实现命令内存容器的模板库
- Hashmaps: C++中开放寻址哈希表算法的实现
密码学
- Bcrypt :一个跨平台的文件加密工具,加密文件可以移植到所有可支持的操作系统和处理器中。
- BeeCrypt:
- Botan: C++加密库
- Crypto++:一个有关加密方案的免费的C++库
- GnuPG: OpenPGP标准的完整实现
- GnuTLS :实现了SSL,TLS和DTLS协议的安全通信库
- Libgcrypt
- libmcrypt
- LibreSSL:免费的SSL/TLS协议,属于2014 OpenSSL的一个分支
- LibTomCrypt:一个非常全面的,模块化的,可移植的加密工具
- libsodium:基于NaCI的加密库,固执己见,容易使用
- Nettle 底层的加密库
- OpenSSL : 一个强大的,商用的,功能齐全的,开放源代码的加密库。
- Tiny AES128 in C :用C实现的一个小巧,可移植的实现了AES128ESB的加密算法
数据库
数据库,SQL服务器,ODBC驱动程序和工具
- hiberlite :用于Sqlite3的C++对象关系映射
- Hiredis: 用于Redis数据库的很简单的C客户端库
- LevelDB: 快速键值存储库
- LMDB:符合数据库四大基本元素的嵌入键值存储
- MySQL++:封装了MySql的C API的C++ 包装器
- RocksDB:来自Facebook的嵌入键值的快速存储
- SQLite:一个完全嵌入式的,功能齐全的关系数据库,只有几百KB,可以正确包含到你的项目中。
调试
调试库, 内存和资源泄露检测,单元测试
- Boost.Test:Boost测试库
- Catch:一个很时尚的,C++原生的框架,只包含头文件,用于单元测试,测试驱动开发和行为驱动开发。
- CppUnit:由JUnit移植过来的C++测试框架
- CTest:CMake测试驱动程序
- googletest:谷歌C++测试框架
- ig-debugheap:用于跟踪内存错误的多平台调试堆
- libtap:用C语言编写测试
- MemTrack —用于C++跟踪内存分配
- microprofile- 跨平台的网络试图分析器
- minUnit :使用C写的迷你单元测试框架,只使用了两个宏
- Remotery:用于web视图的单一C文件分析器
- UnitTest++:轻量级的C++单元测试框架
游戏引擎
- Cocos2d-x :一个跨平台框架,用于构建2D游戏,互动图书,演示和其他图形应用程序。
- Grit :社区项目,用于构建一个免费的游戏引擎,实现开放的世界3D游戏。
- Irrlicht :C++语言编写的开源高性能的实时#D引擎
- Polycode:C++实现的用于创建游戏的开源框架(与Lua绑定)。
图形用户界面
- CEGUI : 很灵活的跨平台GUI库
- FLTK :快速,轻量级的跨平台的C++GUI工具包。
- GTK+: 用于创建图形用户界面的跨平台工具包
- gtkmm :用于受欢迎的GUI库GTK+的官方C++接口。
- imgui:拥有最小依赖关系的立即模式图形用户界面
- libRocket :libRocket 是一个C++ HTML/CSS 游戏接口中间件
- MyGUI :快速,灵活,简单的GUI
- Ncurses:终端用户界面
- QCustomPlot :没有更多依赖关系的Qt绘图控件
- Qwt :用户与技术应用的Qt 控件
- QwtPlot3D :功能丰富的基于Qt/OpenGL的C++编程库,本质上提供了一群3D控件
- OtterUI :OtterUI 是用于嵌入式系统和互动娱乐软件的用户界面开发解决方案
- PDCurses 包含源代码和预编译库的公共图形函数库
- wxWidgets C++库,允许开发人员使用一个代码库可以为widows, Mac OS X,Linux和其他平台创建应用程序
图形
- bgfx:跨平台的渲染库
- Cairo:支持多种输出设备的2D图形库
- Horde3D 一个小型的3D渲染和动画引擎
- magnum C++11和OpenGL 2D/3D 图形引擎
- Ogre 3D 用C++编写的一个面向场景,实时,灵活的3D渲染引擎(并非游戏引擎)
- OpenSceneGraph 具有高性能的开源3D图形工具包
- Panda3D 用于3D渲染和游戏开发的框架,用Python和C++编写。
- Skia 用于绘制文字,图形和图像的完整的2D图形库
- urho3d 跨平台的渲染和游戏引擎。
图像处理
- Boost.GIL:通用图像库
- CImg :用于图像处理的小型开源C++工具包
- CxImage :用于加载,保存,显示和转换的图像处理和转换库,可以处理的图片格式包括 BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K。
- FreeImage :开源库,支持现在多媒体应用所需的通用图片格式和其他格式。
- GDCM:Grassroots DICOM 库
- ITK:跨平台的开源图像分析系统
- Magick++:ImageMagick程序的C++接口
- MagickWnd:ImageMagick程序的C++接口
- OpenCV : 开源计算机视觉类库
- tesseract-ocr:OCR引擎
- VIGRA :用于图像分析通用C++计算机视觉库
- VTK :用于3D计算机图形学,图像处理和可视化的开源免费软件系统。
国际化
Json
- frozen : C/C++的Json解析生成器
- Jansson :进行编解码和处理Json数据的C语言库
- jbson :C++14中构建和迭代BSON data,和Json 文档的库
- JeayeSON:非常健全的C++ JSON库,只包含头文件
- JSON++ : C++ JSON 解析器
- json-parser:用可移植的ANSI C编写的JSON解析器,占用内存非常少
- json11 :一个迷你的C++11 JSON库
- jute :非常简单的C++ JSON解析器
- ibjson:C语言中的JSON解析和打印库,很容易和任何模型集成。
- libjson:轻量级的JSON库
- PicoJSON:C++中JSON解析序列化,只包含头文件
- qt-json :用于JSON数据和 QVariant层次间的相互解析的简单类
- QJson:将JSON数据映射到QVariant对象的基于Qt的库
- RapidJSON: 用于C++的快速JSON 解析生成器,包含SAX和DOM两种风格的API
- YAJL :C语言中快速流JSON解析库
日志
- Boost.Log :设计非常模块化,并且具有扩展性
- easyloggingpp:C++日志库,只包含单一的头文件。
- Log4cpp :一系列C++类库,灵活添加日志到文件,系统日志,IDSA和其他地方。
- templog:轻量级C++库,可以添加日志到你的C++应用程序中
机器学习
- Caffe :快速的神经网络框架
- CCV :以C语言为核心的现代计算机视觉库
- mlpack :可扩展的C++机器学习库
- OpenCV:开源计算机视觉库
- Recommender:使用协同过滤进行产品推荐/建议的C语言库。
- SHOGUN:Shogun 机器学习工具
- sofia-ml :用于机器学习的快速增量算法套件
数学
- Armadillo :高质量的C++线性代数库,速度和易用性做到了很好的平衡。语法和MatlAB很相似
- blaze:高性能的C++数学库,用于密集和稀疏算法。
- ceres-solver :来自谷歌的C++库,用于建模和解决大型复杂非线性最小平方问题。
- CGal: 高效,可靠的集合算法集合
- cml :用于游戏和图形的免费C++数学库
- Eigen :高级C++模板头文件库,包括线性代数,矩阵,向量操作,数值解决和其他相关的算法。
- GMTL:数学图形模板库是一组广泛实现基本图形的工具。
- GMP:用于个高精度计算的C/C++库,处理有符号整数,有理数和浮点数。
多媒体
- GStreamer :构建媒体处理组件图形的库
- LIVE555 Streaming Media :使用开放标准协议(RTP/RTCP, RTSP, SIP) 的多媒体流库
- libVLC :libVLC (VLC SDK)媒体框架
- QtAv:基于Qt和FFmpeg的多媒体播放框架,能够帮助你轻而易举地编写出一个播放器
- SDL :简单直控媒体层
- SFML :快速,简单的多媒体库
网络
- ACE:C++面向对象网络变成工具包
- Boost.Asio:用于网络和底层I/O编程的跨平台的C++库
- Casablanca:C++ REST SDK
- cpp-netlib:高级网络编程的开源库集合
- Dyad.c:C语言的异步网络
- libcurl :多协议文件传输库
- Mongoose:非常轻量级的网络服务器
- Muduo :用于Linux多线程服务器的C++非阻塞网络库
- net_skeleton :C/C++的TCP 客户端/服务器库
- nope.c :基于C语言的超轻型软件平台,用于可扩展的服务器端和网络应用。 对于C编程人员,可以考虑node.js
- Onion :C语言HTTP服务器库,其设计为轻量级,易使用。
- POCO:用于构建网络和基于互联网应用程序的C++类库,可以运行在桌面,服务器,移动和嵌入式系统。
- RakNet:为游戏开发人员提供的跨平台的开源C++网络引擎。
- Tuf o :用于Qt之上的C++构建的异步Web框架。
- WebSocket++ :基于C++/Boost Aiso的websocket 客户端/服务器库
- ZeroMQ :高速,模块化的异步通信库
物理学
动力学仿真引擎
- Box2D:2D的游戏物理引擎。
- Bullet :3D的游戏物理引擎。
- Chipmunk :快速,轻量级的2D游戏物理库
- LiquidFun:2D的游戏物理引擎
- ODE :开放动力学引擎-开源,高性能库,模拟刚体动力学。
- ofxBox2d:Box2D开源框架包装器。
- Simbody :高性能C++多体动力学/物理库,模拟关节生物力学和机械系统,像车辆,机器人和人体骨骼。
机器人学
- MOOS-IvP :一组开源C++模块,提供机器人平台的自主权,尤其是自主的海洋车辆。
- MRPT:移动机器人编程工具包
- PCL :点云库是一个独立的,大规模的开放项目,用于2D/3D图像和点云处理。
- Robotics Library (RL): 一个独立的C++库,包括机器人动力学,运动规划和控制。
- RobWork:一组C++库的集合,用于机器人系统的仿真和控制。
- ROS :机器人操作系统,提供了一些库和工具帮助软件开发人员创建机器人应用程序。
科学计算
脚本
- ChaiScript :用于C++的易于使用的嵌入式脚本语言。
- Lua :用于配置文件和基本应用程序脚本的小型快速脚本引擎。
- luacxx:用于创建Lua绑定的C++ 11 API
- SWIG :一个可以让你的C++代码链接到JavaScript,Perl,PHP,Python,Tcl和Ruby的包装器/接口生成器
- V7:嵌入式的JavaScript 引擎。
- V8 :谷歌的快速JavaScript引擎,可以被嵌入到任何C++应用程序中。
序列化
- Cap'n Proto :快速数据交换格式和RPC系统。
- cereal :C++11 序列化库
- FlatBuffers :内存高效的序列化库
- MessagePack :C/C++的高效二进制序列化库,例如 JSON
- protobuf :协议缓冲,谷歌的数据交换格式。
- protobuf-c :C语言的协议缓冲实现
- SimpleBinaryEncoding:用于低延迟应用程序的对二进制格式的应用程序信息的编码和解码。
- Thrift :高效的跨语言IPC/RPC,用于C++,Java,Python,PHP,C#和其它多种语言中,最初由Twitter开发。
视频
- libvpx :VP8/VP9编码解码SDK
- FFmpeg :一个完整的,跨平台的解决方案,用于记录,转换视频和音频流。
- libde265 :开放的h.265视频编解码器的实现。
- OpenH264:开源H.364 编解码器。
- Theora :免费开源的视频压缩格式。
虚拟机
- CarpVM:C中有趣的VM,让我们一起来看看这个。
- MicroPython :旨在实现单片机上Python3.x的实现
- TinyVM:用纯粹的ANSI C编写的小型,快速,轻量级的虚拟机。
Web应用框架
- Civetweb :提供易于使用,强大的,C/C++嵌入式Web服务器,带有可选的CGI,SSL和Lua支持。
- CppCMS :免费高性能的Web开发框架(不是 CMS).
- Crow :一个C++微型web框架(灵感来自于Python Flask)
- Kore :使用C语言开发的用于web应用程序的超快速和灵活的web服务器/框架。
- libOnion:轻量级的库,帮助你使用C编程语言创建web服务器。
- QDjango:使用C++编写的,基于Qt库的web框架,试图效仿Django API,因此得此名。
- Wt :开发Web应用的C++库。
XML
XML就是个垃圾,xml的解析很烦人,对于计算机它也是个灾难。这种糟糕的东西完全没有存在的理由了。-Linus Torvalds
- Expat :用C语言编写的xml解析库
- Libxml2 :Gnome的xml C解析器和工具包
- libxml++ :C++的xml解析器
- PugiXML :用于C++的,支持XPath的轻量级,简单快速的XML解析器。
- RapidXml :试图创建最快速的XML解析器,同时保持易用性,可移植性和合理的W3C兼容性。
- TinyXML :简单小型的C++XML解析器,可以很容易地集成到其它项目中。
- TinyXML2:简单快速的C++CML解析器,可以很容易集成到其它项目中。
- TinyXML++:TinyXML的一个全新的接口,使用了C++的许多许多优势,模板,异常和更好的异常处理。
- Xerces-C++ :用可移植的C++的子集编写的XML验证解析器。
多项混杂
一些有用的库或者工具,但是不适合上面的分类,或者还没有分类。
- C++ Format :C++的小型,安全和快速格式化库
- casacore :从aips++ 派生的一系列C++核心库
- cxx-prettyprint:用于C++容器的打印库
- DynaPDF :易于使用的PDF生成库
- gcc-poison :帮助开发人员禁止应用程序中的不安全的C/C++函数的简单的头文件。
- googlemock:编写和使用C++模拟类的库
- HTTP Parser :C的http请求/响应解析器
- libcpuid :用于x86 CPU检测盒特征提取的小型C库
- libevil :许可证管理器
- libusb:允许移动访问USB设备的通用USB库
- PCRE:正则表达式C库,灵感来自于Perl中正则表达式的功能。
- Remote Call Framework :C++的进程间通信框架。
- Scintilla :开源的代码编辑控件
- Serial Communication Library :C++语言编写的跨平台,串口库。
- SDS:C的简单动态字符串库
- SLDR :超轻的DNS解析器
- SLRE: 超轻的正则表达式库
- Stage :移动机器人模拟器
- VarTypes:C++/Qt4功能丰富,面向对象的管理变量的框架。
- ZBar:‘条形码扫描器’库,可以扫描照片,图片和视频流中的条形码,并返回结果。
- CppVerbalExpressions :易于使用的C++正则表达式
- QtVerbalExpressions:基于C++ VerbalExpressions 库的Qt库
- PHP-CPP:使用C++来构建PHP扩展的库
- Better String :C的另一个字符串库,功能更丰富,但是没有缓冲溢出问题,还包含了一个C++包装器。
软件
用于创建开发环境的软件
编译器
C/C++编译器列表
- Clang :由苹果公司开发的
- GCC:GNU编译器集合
- Intel C++ Compiler :由英特尔公司开发
- LLVM :模块化和可重用编译器和工具链技术的集合
- Microsoft Visual C++ :MSVC,由微软公司开发
- Open WatCom :Watcom,C,C++和Fortran交叉编译器和工具
- TCC :轻量级的C语言编译器
在线编译器
在线C/C++编译器列表
- codepad :在线编译器/解释器,一个简单的协作工具
- CodeTwist:一个简单的在线编译器/解释器,你可以粘贴的C,C++或者Java代码,在线执行并查看结果
- coliru :在线编译器/shell, 支持各种C++编译器
- Compiler Explorer:交互式编译器,可以进行汇编输出
- CompileOnline:Linux上在线编译和执行C++程序
- Ideone :一个在线编译器和调试工具,允许你在线编译源代码并执行,支持60多种编程语言。
调试器
C/C++调试器列表
- Comparison of debuggers :来自维基百科的调试器列表
- GDB :GNU调试器
- Valgrind:内存调试,内存泄露检测,性能分析工具。
集成开发环境(IDE)
C/C++集成开发环境列表
- AppCode :构建与JetBrains’ IntelliJ IDEA 平台上的用于Objective-C,C,C++,Java和Java开发的集成开发环境
- CLion:来自JetBrains的跨平台的C/C++的集成开发环境
- Code::Blocks :免费C,C++和Fortran的集成开发环境
- CodeLite :另一个跨平台的免费的C/C++集成开发环境
- Dev-C++:可移植的C/C++/C++11集成开发环境
- Eclipse CDT:基于Eclipse平台的功能齐全的C和C++集成开发环境
- Geany :轻量级的快速,跨平台的集成开发环境。
- IBM VisualAge :来自IBM的家庭计算机集成开发环境。
- Irony-mode:由libclang驱动的用于Emacs的C/C++微模式
- KDevelop:免费开源集成开发环境
- Microsoft Visual Studio :来自微软的集成开发环境
- NetBeans :主要用于Java开发的的集成开发环境,也支持其他语言,尤其是PHP,C/C++和HTML5。
- Qt Creator:跨平台的C++,Javascript和QML集成开发环境,也是Qt SDK的一部分。
- rtags:C/C++的客户端服务器索引,用于 跟基于clang的emacs的集成
- Xcode :由苹果公司开发
- YouCompleteMe:一个用于Vim的根据你敲的代码快速模糊搜索并进行代码补全的引擎。
构建系统
- Bear :用于为clang工具生成编译数据库的工具
- Biicode:基于文件的简单依赖管理器。
- CMake :跨平台的免费开源软件用于管理软件使用独立编译的方法进行构建的过程。
- CPM:基于CMake和Git的C++包管理器
- FASTBuild:高性能,开源的构建系统,支持高度可扩展性的编译,缓冲和网络分布。
- Ninja :专注于速度的小型构建系统
- Scons :使用Python scipt 配置的软件构建工具
- tundra :高性能的代码构建系统,甚至对于非常大型的软件项目,也能提供最好的增量构建次数。
- tup:基于文件的构建系统,用于后台监控变化的文件。
静态代码分析
提高质量,减少瑕疵的代码分析工具列表
- Cppcheck :静态C/C++代码分析工具
- include-what-you-use :使用clang进行代码分析的工具,可以#include在C和C++文件中。
- OCLint :用于C,C++和Objective-C的静态源代码分析工具,用于提高质量,减少瑕疵。
- Clang Static Analyzer:查找C,C++和Objective-C程序bug的源代码分析工具
- List of tools for static code analysis :来自维基百科的静态代码分析工具列表
微信公众号
from https://github.com/jobbole/awesome-cpp-cn,
http://hao.jobbole.com/?catid=374
http://hao.jobbole.com/?catid=374