This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
https://github.com/fffaraz/awesomecpp
Awesome C/C++A curated list of awesome C/C++ frameworks, libraries,
resources, and shiny things. Inspired by awesome... stuff.
Dlib :zap: A general purpose crossplatform C++ library designed using contract programming andmodern C++ techniques. [Boost]
EASTL Public part of EASTL. [BSD]
ffeadcpp Framework for Enterprise Application Development. [Apache2]
Folly An opensource C++ library developed and used at Facebook. [Apache2]
JUCE An allencompassing C++ class library for developing crossplatform software. [CoreModule: ISC,Rest: GPL2/GPL3/Commercial] website
libPhenom libPhenom is an eventing framework for building high performance and high scalability systemsin C. [Apache2]
LibSourcey C++11 evented IO for realtime video streaming and high performance networkingapplications. [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 headersonly C++ Library. [Boost]
OpenFrameworks A cross platform open source toolkit for creative coding in C++. [MIT] website
Qt :zap: A crossplatform application and UI framework. [LGPL]
Reason A cross platform framework designed to bring the ease of use of Java, .Net, or Python todevelopers 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 ofdata 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++ crossplatform 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 multimethods for C++11. [Boost]
Artificial Intelligence
btsk Game Behavior Tree Starter Kit. [zlib]
Evolving Objects A templatebased, ANSIC++ evolutionary computation library which helps you to writeyour own stochastic optimization algorithms insanely fast. [LGPL]
Neu A C++ 11 framework, collection of programming languages, and multipurpose software systemdesigned for: the creation of artificial intelligence applications. [BSD]
Asynchronous Event Loop
Boost.Asio A crossplatform C++ library for network and lowlevel I/O programming. [Boost]
libev A fullfeatured and highperformance event loop that is loosely modelled after libevent, but without itslimitations and bugs. [BSD and GPL]
termbox A C library for writing textbased user interfaces. [BSD]
CompressionCompression and Archiving Libraries
bzip2 A freely available, patent free, highquality 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 alsoprovides transparent compression and decompression of data, using formats like gzip, via a subclass ofQIODevice. [LGPL]
LZ4 Extremely Fast Compression algorithm. [BSD]
LZHAM Lossless data compression library with a compression ratio similar to LZMA but with much fasterdecompression. [BSD]
LZMA :zap: The default and general compression method of 7z format. [PublicDomain]
LZMAT An extremely fast realtime lossless data compression library. [GPL]
miniz Single C source file Deflate/Inflate compression library with zlibcompatible API, ZIP archivereading/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]
ITK An opensource, crossplatform system for image analysis. [Apache 2.0 from ITK 4.0]
libvips A fast image processing library with low memory needs. [LGPL] website
Magick++ ImageMagick program interfaces for C++. [Apache 2.0]
MagickWnd ImageMagick program interfaces for C. [Apache 2.0]
OpenCV :zap: Open source computer vision. [BSD]
tesseractocr An OCR engine. [Apache 2.0]
VIGRA A generic C++ computer vision library for image analysis. [MIT X11]
VTK Opensource, freely available software system for 3D computer graphics, image processing andvisualization. [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]
Interprocess communication
Apache Thrift Efficient crosslanguage IPC/RPC, works between C++, Java, Python, PHP, C#, and manymore other languages. Originally developed by Facebook. [Apache2]
Cap'n Proto Fast data interchange format and capabilitybased RPC system. [MIT]
gRPC A high performance, open source, generalpurpose RPC framework. [BSD] website
PicoJSON A headerfileonly, JSON parser serializer in C++. [BSD]
qtjson A simple class for parsing JSON data into a QVariant hierarchy and vice versa. [GPLv3]
QJson A qtbased library that maps JSON data to QVariant objects. [LGPL2]
RapidJSON :zap: A fast JSON parser/generator for C++ with both SAX/DOM style API. [MIT]
YAJL A fast streaming JSON parsing library in C. [ISC]
Logging
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 threadsafe, flexible, and arbitrarily granular controlover log management and configuration. [BSD & Apache 2.0]
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]
Caffe A fast framework for neural networks. [BSD]
CCV Cbased/Cached/Core Computer Vision Library, A Modern Computer Vision Library. [BSD]
Minerva A fast and flexible system for deep learning. [Apache2]
mlpack A scalable c++ machine learning library. [LGPLv3]
OpenCV :zap: 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]
sofiaml 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 andease of use. The syntax (API) is deliberately similar to Matlab. [MPL2]
blaze highperformance C++ math library for dense and sparse arithmetic. [BSD]
ceressolver C++ library for modeling and solving large complicated nonlinear least squares problemsfrom google. [BSD]
CGal Collection of efficient and reliable geometric algorithms. [LGPL&GPL]
cml free C++ math library for games and graphics. [Boost]
Eigen A highlevel C++ library of template headers for linear algebra, matrix and vector operations,numerical solvers and related algorithms. [MPL2]
Muduo A C++ nonblocking network library for multithreaded server in Linux. [BSD]
net_skeleton TCP client/server library for C/C++. [GPL2]
nope.c A C languagebased ultralight software platform for scalable serverside and networkingapplications. Think node.js for C programmers. [GPL2]
Onion HTTP server library in C designed to be lightweight and easy to use. [Apache2/GPL2]
POCO :zap: C++ class libraries and frameworks for building network and internetbased applications thatrun 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]
Tufão An asynchronous web framework for C++ built on top of Qt. [LGPL2]
WebSocket++ C++/Boost Asio based websocket client/server library. [BSD]
PhysicsDynamics simulation engines
Box2D A 2D physics engine for games. [BSDlike]
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. [BSDlike]
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 bodydynamics. [BSD&LGPL]
ofxBox2d openFrameworks wrapper for Box2D. [BSDlike]
Simbody Highperformance C++ multibody dynamics/physics library for simulating articulatedbiomechanical and mechanical systems like vehicles, robots, and the human skeleton. [Apache2]
Robotics
MOOSIvP A set of open source C++ modules for providing autonomy on robotic platforms, in particularautonomous 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 cloudprocessing [BSD] website
Robotics Library (RL) A selfcontained 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 robotapplications. [BSD]
Scientific Computing
FFTW A C library for computing the DFT in one or more dimensions. [GPL]
GSL GNU scientific library. [GPL]
Scripting
ChaiScript An easy to use embedded scripting language for C++. [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 Luasupport. [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 followdjango's API, hence its name. [LGPL]
Wt A C++ library for developing web applications. [GPL/Commercial]
XMLXML is crap. Really. There are no excuses. XML is nasty to parse for humans, and it's a disaster to parse evenfor 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]
Libxml2 The XML C parser and toolkit of Gnome. [MIT]
libxml++ An XML Parser for C++. [LGPL2]
PugiXML A lightweight, 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 andreasonable 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]
XercesC++ A validating XML parser written in a portable subset of C++. [Apache2]
MiscellaneousUseful libraries or tools that don't fit in the categories above or maybe just not categorised yet
Better String An alternative to the string library for C which is more functional and does not have bufferoverflow 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]
casacore A set of c++ core libraries derived from aips++. [LGPL]
CppVerbalExpressions C++ regular expressions made easy. [MIT]
Premake A tool configured with lua scipt to generate project files for Visual Studio, GNU Make, Xcode,Code::Blocks, and more across Windows, Mac OS X, and Linux.
Static Code AnalysisList of tools for improving quality and reducing defects by code analysis
Cppcheck A tool for static C/C++ code analysis. source
includewhatyouuse 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 ObjectiveC. source
Clang Static Analyzer A source code analysis tool that finds bugs in C, C++, and ObjectiveC programs.
List of tools for static code analysis A list of tools for static code analysis from Wikipedia.
ResourcesVarious resources, such as books, websites, and articles for improving your C++ development skills andknowledge.
API Design
Beautiful Native Libraries
Designing QtStyle C++ APIs
ArticlesFantastic C/C++ related articles.
CppCon 2014 Speaker Materials Speaker materials from CppCon 2014.
C++Now 2014 Presentations Presentation materials presented at C++Now 2014.