开源 C++ 库列表
来自cppreference.com
此页面的目的是构建开源 C++ 库的比较列表,使得人们在需要特定功能的实现时,不必浪费时间在网上(DuckDuckGo、谷歌、必应等)搜索。
若你知道可能对其他人有用的库,请在此添加到它的链接。能包含进来的库没有限制,但是必须能便捷地下载库的源码。
以“原态”提供此页面——希望这有用,但不提供任何担保。过时、误导或错误的链接可能出现于此。若你注意到这些错误,则改正它会很有意义。
库:目录 |
---|
库: |
[编辑] 包管理器
包管理器 | 简述 |
---|---|
build2 | 一个开源的 (MIT)、跨平台的构建工具链,旨在为开发和打包 C/C++ 项目时提供如 Rust Cargo 一样的便利性,同时提供构建系统中的深度定制和灵活性。 |
cget | CMake 包检索工具,可用于下载并安装 CMake 包。 |
cmodule | 非侵入式 CMake 依赖管理。 |
conan | 去中心化、开源 (MIT) 的 C/C++ 包管理器。 |
CPM.cmake | 一段可以为 CMake 加入依赖管理功能的 CMake 脚本。它是作为 CMake 的 FetchContent 模块的一个简单包装构建的。该模块加入了版本控制、缓存、简单 API 等功能。 |
hunter | 一个 CMake 驱动的跨平台包管理器,服务于 C/C++ 项目。 |
spack | 一个超级计算机、Linux、macOS 平台的包管理器。它使得安装科学软件变得简单。非绑定于某一特定语言。 |
teaport | 一个受 cocoapods 启发的依赖管理器。 |
vcpkg | 一个 Windows、Linux、macOS 平台的 C++ 包管理器。 |
xmake | 跨平台的基于 Lua 的 C/C++ 构建工具和包管理器。 |
[编辑] 库
[编辑] 音频
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Amplitude Audio SDK | 一款为游戏需求而设计的跨平台音频引擎。(源码) | Apache-2.0 | cmake, vcpkg |
Aquila | Aquila 是一个开源、跨平台的 C++11 DSP 库。 | MIT | cmake |
Aubio | 用于音频和音乐分析的 C/Python 库。(源码) | GPL-3.0 | make |
audioFlux | 用于音频和音乐分析与特征提取的 C 库。 | MIT | |
Essentia | 开源库,音频和音乐分析、描述和合成工具 (MIR) (源码) | Affero GPLv3 | |
FFTW | 离散傅里叶变换 (DFT) 计算库 (SSE/SSE2/AVX/Altivec/ARM Neon)。(源码) | GPL-2.0 | cmake |
FMOD | 一款易用的跨平台游戏音频引擎和音频内容创建工具。 | 非商用免费/商用 | cmake |
KFR | 快速、现代、C++17、开源并且跨平台的 DSP/DFT 框架。支持音频重采样、FIR/IIR 滤波器、二阶滤波器, (SSE, AVX, AVX-512, ARM NEON)。(源码) | GPL-2.0 | cmake |
libsoundio | 用于跨平台实时音频输入输出的 C 库。(源码) | MIT | cmake |
Maximilian | C++ 音频和音乐 DSP 库。 | MIT | cmake |
Miniaudio | 音频回放和捕获 C 库。(源码) | Unlicense | 单源文件 |
ni-media | 用于读取并写入音频文件的 C++ 库。 | MIT | cmake, vcpkg |
OpenAL | 跨平台音频 API。 | BSD/LGPL/私有 | cmake |
PortAudio | PortAudio 是一款自由的跨平台开源音频 I/O 库。(源码) | MIT | cmake, vcpkg |
rnnoise | 用于音频降噪的递归神经网络。 | BSD-3-Clause | make |
SELA | 简单无损音频 (SimplE Lossless Audio)。 | MIT | cmake |
SoLoud | 易用可移植游戏音频引擎。 | zlib | |
Soundtouch | SoundTouch 是一个开源、跨平台的音频处理库,用于更改音频流或音频文件的速度、音调和播放速率。(源码) | LGPL-2.1 | make |
Tonic | 易用且高效的 C++ 音频合成。 | Unlicense | |
Verovio | 快速且轻量级音乐记谱库。(源码) | LGPL | cmake, qmake |
Wav2Letter++ | 快速语音识别工具包,完全以 C++ 编写,使用 ArrayFire 张量库和 flashlight 机器学习库以最大化效率。 | Unlicense | cmake |
- CD
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
libkcompactdisc | CD 接口库 | GPL v2.0 | cmake |
- 音频指纹
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
chromaprint | Chromaprint 是一个音频指纹库,设计用于识别近乎相同的音频。它为搜索性能付出一定精度和健壮性。Chromaprint 可以使用多个 FFT 库 - FFmpeg, FFTW3, KissFFT 或 vDSP。(源码) | MIT, LGPL-2.1 | cmake |
libmusicbrainz | MusicBrainz 客户端库 (libmusicbrainz),也称为 mb_client,是一个开发库,面向需要为自己的应用程序添加 MusicBrainz 查找能力的开发人员。支持 Windows, Linux 和 Mac OS X (源码) | LGPL-2.1 | cmake |
libofa | MusicIP 开源音频指纹库 | APL | makefile |
- 格式
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
AudioFile | 用于读写音频文件的简单 C++ 库。 | MIT | cmake |
audio_file | 一款处理许多常见格式音频文件的读取和写入的库。(源码) | LGPL-2.1 | makefile |
dr_libs | 单文件音频 (FLAC, MP3, WAV) 解码库,用于 C 和 C++。 | Unlicense | |
flac | FLAC 代表 Free Lossless Audio Codec,意思是以 FLAC 格式压缩的音频没有质量损失。FLAC 是最快且最广泛支持的无损音频编解码器,非私有软件,不受专利拖累。 | 开源, BSD, GPL | |
LAME | LAME 是一款高质量 MPEG Audio Layer III (MP3) 编码器。 | LGPL | |
libsndfile | 一款提供 C++ 包装的 C 库,用于通过一个标准库接口读写包含声音采样的文件(如 WAV、AIFF)。(源码) | LGPL-2.1 | cmake, make, vcpkg |
minimp3 | 极简化的 MP3 解码器 | CC0-1.0 | 仅头文件 |
Opus | 完全开放的,免版税的,多用途音频编码解码器。 | BSD | cmake |
Vorbis | Ogg Vorbis 是一款完全开放的,无私权的,免专利和版税的,通用的压缩音频格式。 | BSD | cmake |
- 标签
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
id3lib | 开源跨平台库,用于读写并操作 ID3v1 和 ID3v2 标签,以及获取一些如比特率之类的基本 mp3 文件头信息。但现在我们建议迁移到 taglib :) | LGPL v2 | |
taglib | TagLib 音频元数据库是用于读写多种流行音频格式的库:MP3 文件的 ID3v1 和 ID3v2,Ogg Vorbis 注释,以及 FLAC, MPC, Speex, WavPack, TrueAudio, WAV, AIFF, MP4 和 ASF 文件的 ID3 标签和 Vorbis 注释。(源码) | LGPL 和 MPL v1.1 |
[编辑] 性能评测
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
benchmark | 用于评测代码片段的库,类似单元测试 | Apache-2.0 | cmake |
Celero | 功能强大的 C++ 评测库/框架。支持 Windows, Linux, 和 OSX,使用 C++11。 | Apache | cmake |
Criterion | 用于现代 C++ 的微评测库。 | MIT | header-only; cmake |
gperftools | “谷歌性能工具”包含高性能、多线程的 malloc 实现加上评测堆分配和 CPU 利用的工具。 | BSD 3-Clause "New" or "Revised" License | configure |
nanobench | 简单、快速、精确的单头文件微评测功能库,用于 C++11/14/17/20。(源码) | MIT | header-only; cmake |
picobench | 极小型微评测库。 | MIT | 仅头文件; cmake |
plf::nanotimer | 用于性能评测的最低开销、跨平台的简单定时器类。 | zlib |
[编辑] 通信
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
ACE | 异步网络、多路分离、报文发送(源码) (文档) | 自定义 | make |
Apache Thrift | Apache Thrift 软件框架,用于规模可变的跨语言服务开发,将软件栈与代码生成引擎结合,构建有效而无缝地在 C++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Cocoa、JavaScript、Node.js、Smalltalk、Ocaml、Delphi 及其他语言间工作的服务。(源码) | Apache-2.0 | cmake, vcpkg |
Boost.Asio | 异步及同步网络、定时器、序列 I/O | BSL-1.0 | |
Boost.Beast | 建立于 Boost.Asio 顶上的 HTTP 及 WebSocket 库 | BSL-1.0 | |
Breep | 基于事件、高层、点对点库,允许用户直接发送和接收对象。 | European Union Public License 1.1 | cmake |
brpc | 百度广泛使用的工业级 RPC 框架,百万以上实例和数千种服务。(源码) (文档) | Apache 2.0 | cmake |
C++ REST SDK | 异步 HTTP 客户端及监听器、异步 Stream、URI、JSON | MIT | cmake |
cpp-httplib | C++11 仅单个头文件的跨平台 HTTP/HTTPS 库 | MIT | 仅头文件; cmake |
FPNN | Fast Programmable Nexus Network. 高性能全异步 RPC 服务框架。同时支持HTTP、WebSocket、TCP和可靠UDP。支持超高压服务器开发,有对应各语言客户端SDK。 | make | |
cpp-netlib | cpp-netlib:C++ 网络库 | BSL-1.0 | cmake |
cpr | 现代 C++ HTTP 请求库 | MIT | cmake |
Crow | C++ 微型 web 框架(受 Python Flask 启发) | BSD-3-Clause | cmake |
curlpp | libcURL(CURL 库)的 C++ 包装。(源码) | cmake, vcpkg | |
DumaisLib | 多种工具,如:WebServer, JSON, WebSocket 服务器,REST 框架等(用于在你的 C++ 应用中创建 REST API 的库) | MIT | Makefile |
EasyHttp | 跨平台的 HTTP 客户端库,专注于可用性和速度,支持 http 响应缓存及更多 | MIT | cmake |
eCAL | 高性能进程间通信 | Apache-2.0 | cmake |
fineftp-server | FTP 服务器库,支持 Windows 和 Unix | MIT | cmake |
FPNN | 高速可编程组连网络。高性能全异步 RPC 服务框架。同时支持 HTTP、WebSocket、TCP 和可靠 UDP 协议。支持超高负载服务器的开发,带有相应客户端 SDKs。 | 未知 | make |
gRPC | 现代开源高性能 RPC 框架,可运行于任何环境。(源码) (文档) | Apache-2.0 | bazel, cmake, vcpkg |
gsoap | XML 数据绑定、快速 WSDL/SOAP/XML 网络服务、WS 安全、 JSON/XML-RPC RESTful 服务的 C/C++ 开发工具套 | GPLv2 | |
hmbdc | 轻便高性能 C++17 消息发布/订阅中间件框架/库 | 仅头文件 | |
HTTPP | 简单、C++14、生产就绪的构建在 Boost 上的 HTTP 服务器,及构建在 libcurl 上的客户端。 | BSD 2-Clause "Simplified" License | cmake, make |
IXWebSocket | 无依赖的开源 WebSocket + HTTP 库,支持 SSL 和逐条消息 deflate 的 WebSocket 扩展。 | BSD 3-Clause "New" or "Revised" License | cmake, make |
KCP | 快速可靠的 ARQ 协议,帮助应用减少网络延迟。 | MIT | cmake |
libashttp | 异步 HTTP 客户端库 | GNU Lesser General Public License v3.0 | |
libjson-rpc-cpp |
提供 C++ 跨平台 JSON-RPC(远程过程调用)支持的框架,完全兼容 JSON-RPC 2.0 & 1.0。 |
MIT | cmake, conan |
libnavajo | C++ 框架,提供快速多线程 http 服务器,HTML5 WebSocket,SSL,X509 和 HTTP 认证、压缩、Cookie 和高级绘画管理,IPv4 和 IPv6(CeCILL-C)。 | CeCILL-C FREE SOFTWARE LICENSE AGREEMENT | cmake |
libtins | 网络包装制作及嗅探库 (源码) (文档) | BSD-2 | cmake, vcpkg |
LiteNetLibPP | 用于游戏的轻便可靠 UDP 库 | MIT | cmake |
mailio | MIME 和电子邮件库 | BSD 2-Clause "Simplified" | cmake |
nanomsg | 快速消息队列,zeromq 接任者 | ||
netif | C++14 库,用于在 Windows、Linux 和 FreeBSD 上获取网络地址 | BSD 3-Clause "New" or "Revised" License | cmake |
nghttp2 | HTTP/2 C 库及工具(服务器、客户端、代理和评测工具) | MIT | cmake, configure |
ngrest | 快速而简易的利用 JSON 的 RESTful Web 服务框架 | Apache-2.0 | cmake |
nng | 快速消息队列,nanomsg 继任者 | ||
Oat++ | Web 框架: REST-API 和 Request 实现 (源码) (文档) | Apache 2.0 | cmake |
omniORB | 最快速、完整而可移植的 CORBA ORB 在 C++ 中的实现 | ||
OpenDDS | 数据分发服务 DDS (Data Distribution Service) 实现 | ||
Paho MQTT | 现代 MQTT C++ 客户端,来自 Eclipse | cmake | |
paozhu | C++20 Web 框架,支持 HTTP/2 ORM WebSocket | MIT | cmake |
PcapPlusPlus | 多平台 C++ 网络嗅探和包装分析及制作框架。为许多流行的包处理引擎提供 C++ 包装,包括 libpcap, Npcap, WinPcap, DPDK, AF_XDP, 和 PF_RING。(源码) | Unlicense | conan, homebrew, cmake, vcpkg |
POCO | 网络:加密、HTTP;ZIP 文件 (文档) | ||
rest_rpc | C++11,高性能,跨平台,简单易用的 rpc 框架 | MIT | cmake |
restbed | 跨平台的功能丰富的框架,为 C++14 应用带来异步 RESTful 功能(HTTP 上的安全通信)。 | 许可协议 | cmake |
restc-cpp | C++ 访问 JSON API。HTTP 客户端,原生 C++ 类到/自 JSON 的序列化,利用 boost::asio 协程的异步 IO。C++14。 | MIT | cmake |
restful_mapper | 于 C++ 中消费 RESTful JSON API 的 ORM | cmake, make | |
seastar | 用 C++14/C++17 实现的高性能服务器端应用框架。 | Apache-2.0 | cmake, etc. |
Silicon | Silicon C++14 Web 框架:快速而稳健的 Web API | MIT | cmake |
sockpp | 简单的现代 C++ 套接库 | BSD 3-Clause "New" or "Revised" License | cmake |
Simple C++ REST library | 在你的 C++ 应用中创建 REST API 的非常简单且自成文档的库 | ||
stream-client | 轻量的、基于 Boost 的客户端 socket/connector/socket pool/resolver | Apache-2.0 | 仅头文件;cmake |
tacopie | C++11 TCP 库 | MIT | cmake |
TAO | CORBA | ||
taox11 | 基于 C++11 的 CORBA 实现 | MIT | |
Unicomm | 异步网络、高层 TCP 通信框架 | ||
uvw | C++17 编写的 libuv (跨平台异步 I/O)包装 | MIT | cmake |
WNetWrap | C++ WinInet 包装 | MIT | |
wvstreams | C++ 网络库,包括 UniConf 和一个便利 D-Bus API | GPL | |
zeromq | 快速消息队列 |
[编辑] 并发
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
AdaptiveCpp | 提供针对 NVIDIA,AMD 和 Intel 的 CPU 和 GPU 的 SYCL 和 C++ 并行 STL offloading 编译器 | BSD-2-Clause | cmake |
Asyncpp | 一个异步 c++ 库,提供多种并发操作 | MIT | cmake |
BlockingCollection | C++11 线程安全、MPMC 阻塞队列、栈和优先级���列类 | GPL-3.0 | 仅头文件 |
Boost.Atomic | 提供原子数据类型和这些数据类型上的操作,以及用于利用原子变量协调多个线程所需的内存定序制约。 | BSL-1.0 | |
Boost.Compute | 基于 OpenCL 的 C++ GPU/并行计算库。 | BSL-1.0 | cmake |
Boost.Context | C++11 库,提供在单个线程上的协作多任务抽象。 | BSL-1.0 | |
Boost.Interprocess | 提供许多简化进程间通信和同步机制使用的功能:共享内存、内存映射文件、信号量、互斥体、条件变量和可更新互斥体类型,具名版本的同步对象、文件锁、消息队列等。 | BSL-1.0 | |
Boost.Lockfree | 提供无阻塞(即免锁)并发数据结构:队列、栈和循环缓冲区 (spsc_queue)。 | BSL-1.0 | |
Boost.MPI | C++ 友好的标准 消息传递接口 (MPI) | BSL-1.0 | |
Boost.Thread | 支持带有共享数据的多线程执行,并提供用于线程间同步数据的方法。 | BSL-1.0 | |
concurrencpp | C++ 的现代并发库。支持任务、执行器、定时器和 C++20 协程。 | MIT | cmake |
Cpp-Taskflow | 带任务依赖的快速 C++ 并行编程 | ||
dispenso | C++ 的高性能并发。parallel_for, 未来 (future), 管线, 定时器, 定时/周期性任务, 以及并发数据结构。 | MIT | cmake |
Highway | 提供性能可移植、长度无关的 SIMD/vector 指令。支持: SSE3, SSE4, AVX*, NEON, SVE*, WASM SIMD, RISC-V, POWER. (文档) | Apache-2.0 | cmake |
hipSYCL | BSD-2-Clause License | cmake | |
HPX | 任何规模的并行和分布式应用的通用 C++ 运行时系统(文档) | BSL-1.0 | cmake, vcpkg |
Intel TBB | Intel® TBB 是一个用于共享内存并行编程和异构计算的跨平台 C++ 库。该库提供:通用并行算法,并发容器,规模可扩展的内存分配器,任务窃取任务调度器,以及低级同步原语。(源码) (文档) | Apache-2.0 或商用 | cmake, make |
KOKKOS | C++ 中的编程模型,用于书写高性能可移植的 HPC 应用,使用 CUDA, HIP, SYCL, HPX, OpenMP 和 C++ 线程为后端 (文档) | 自定义 | cmake, make |
libopenmpi | Open MPI 项目是一种开源消息传递接口(MPI)实现 | 3-clause BSD | |
libsimdpp | 可移植的零开销 C++ 低级 SIMD 库。 | Boost | header-only; cmake |
MPL | C++-17 友好的标准消息传递接口(MPI) | BSD 3-Clause "New" or "Revised" | 仅头文件; cmake |
MutexGear | 仅使用互斥体的同步(轮子、读写锁、工作队列)C/C++11 库 | The MutexGear Library | configure, msvc, make |
OpenMP | 用于并行编程的 OpenMP API 规范 | ||
PoCL | OpenCL 标准的可移植开源 (基于 LLVM) 实现。(源码) (文档) | MIT | cmake |
RaftLib | C++17 流式并发行为体(actor),可以进行并行数据流计算 | Apache-2.0 | cmake |
SObjectizer | 通过行为体和发布/订阅模型,简化开发 C++ 并发和事件驱动应用的小型框架。 | BSD-3-Clause | cmake, vcpkg, conan |
stdgpu | 高效的 STL 风格的 GPU 数据结构 | Apache 2.0 | cmake |
subprocess | 用于运行子进程的 C++17/20 跨平台库 | MIT | cmake, teaport |
Taskflow | 现代 C++ 并行任务编程 | TASKFLOW MIT | cmake |
task-thread-pool | C++11 的快速且轻便的线程池。 | BSD-2-Clause 或 MIT 或 BSL-1.0 | cmake, vcpkg, single header |
ThreadPool | 简单的轻型线程池 | BSD-3-Clause | 仅头文件; cmake, make |
thread_pool | 现代、快速、轻便线程池 | MIT | cmake |
Thrust | 基于 CUDA、TBB 或 OpenMP 的仿 STL 并行算法及数据结构 | Apache v2.0, Boost v1.0. | cmake |
TimerAlarm | 基于线程的定时器和闹钟。 | BSD-3-Clause | 仅头文件; cmake, make |
VexCL | OpenCL、CUDA、OpenMP 的 C++ 向量表达式模板库 | MIT | cmake |
ViennaCL | 带 OpenMP、CUDA 及 OpenCL 后端的线性代数及算法。(源码) (文档) | 自定义 | cmake |
Xenium | C++17 库,提供多种并发数据结构和回收方案。 | MIT | 仅头文件; cmake |
[编辑] 配置
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Boost.Program_options | 该库允许通过命令行、配置文件、环境变量等传统方式获得用户输入的(名称,值)对作为程序选项。 | BSL-1.0 | |
figcone | 通过声明结构体来读取 JSON, YAML, TOML, XML 或 INI 配置数据 | MS-PL | cmake |
gconfmm | 流行 GUI 库 GTK 的跨平台(官方)C++ 接口,包括类型安全的回调,以及一组丰富的易于通过继承扩展的部件。gtkmm 使用 STL,包括 string、容器和迭代器。支持 UTF8。(源码) (文档) | LGPLv2.1 | autotools, meson, make |
libconfig | 一个简单的跨平台 C/C++ 库,用于处理结构化配置文件 ("*.cfg") (源码) (文档) | LGPL 2.1 | autotools, cmake, make |
libconfini | 以 C 编写的跨平台 INI 分析器 (文档) | GPL-3.0 | autotools, make |
uconfig | 轻量级 C++17 配置库 | Apache License 2.0 | 仅头文件; cmake |
- 命令行
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Argh! | 极简化参数处理。 | BSD 3-Clause | 仅头文件; cmake, vcpkg |
argparse (hbristow) | 用于解析命令行参数的 C++ 类,具有与 python 的同名类相似的接口。 | BSD | |
argparse (morrisfranken) | 用于以优雅方式解析命令行参数的轻型库。 | Apache 2 | 仅头文件; cmake |
argparse (p-ranav) | 用于 C++17 的命令行参数解析器。 | MIT | 仅头文件; cmake, vcpkg |
args | 简单的 C++ 参数解析器库。 | MIT | 仅头文件; cmake, conan, meson, vcpkg |
Boost.Program_options | 该库允许通过命令行、配置文件、环境变量等传统方式获得用户输入的(名称,值)对作为程序选项。 | BSL-1.0 | |
CLI11 | C++11 命令行分析器,提供一组丰富功能和一个简单直观的接口。 | BSD-3-Clause | 仅头文件; cmake, meson, vcpkg |
clipp | 用于现代 C++ 的强大且有表达力的参数解析。 | MIT | 仅头文件; cmake, vcpkg |
cmd_line_parser | 用于 C++17 的命令行解析器。 | MIT | 仅头文件; cmake |
cmdlime | 用于命令行解析的 C++17 库,提供精简的声明式接口,并支持子命令,验证器,以及选择 GNU, POSIX, 或 X11 命令行选项格式的能力。 | MS-PL | cmake |
cxxopts | 轻量级 C++11/C++17 命令行参数选项分析器,支持标准 GNU 风格的选项语法。 | MIT | 仅头文件; bazel, cmake |
fire-hpp | 使用函数签名创建全功能的 CLI。 | BSL-1.0 | 仅头文件; cmake |
flags | 简单可扩展的 C++17 参数解析器。 | Unlicense | 仅头文件; cmake |
gflags | 实现了命令行参数选项处理的库。它包含对 string 等标准类型的自建支持,并可以在所使用的的源文件中定义参数选项。 | BSD | cmake |
structopt | 通过定义结构体来解析命令行参数。 | MIT | 仅头文件; cmake |
tclap | 一个用于命令行参数选项分析的简洁的模板化的 C++ 库。该库提供简洁而灵活的面向对象接口。 | MIT | cmake |
- CSS
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
mycss | CSS 解析器 |
- HOCON
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
cpp-hocon | Pupplet 开发的 HOCON 格式的 C++ 实现。 |
- JSON
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
ArduinoJson | 用于 Arduino, IoT 和 嵌入式 C++ 的 C++98/11/14/17 JSON 库 | MIT | cmake |
Boost.JSON | C++11/17 的 JSON 解析、序列化和 DOM | BSL-1.0 | |
cajun-jsonapi | JSON 的 C++ API,提供尽可能模仿标准 C++ 的直观精简的接口。 | make | |
DAW JSON Link | 提供带有类型检查的静态 C++ 绑定的 C++17 库,可以不进行库分配就直接分析用户数据,支持推/拉模型、分配器支持和 constexpr | BSL 1.0 | cmake |
Glaze | 最快的 JSON 库之一,(C++23) 利用直接内存序列化。还支持 BEVE 和 CSV。 | MIT | cmake, conan, build2, vcpkg |
jansson | Jansson 是编码、解码及操纵 JSON 数据的 C 库,支持 UTF-8。 | MIT | cmake, make |
jeayeson | 非常健全的 C++14 JSON 库 | BSD-3 | 仅头文件 |
jios | JSON 输入输出流 (JSON Input Output Streams) | MIT | cmake |
JOST | |||
json | Niels Lohmann 的 C++11 JSON,提供直观语法 | MIT | 仅头文件; bazel, cmake, meson |
Jsonifier | 提供极快 JSON 解析/序列化功能的几个 C++20 类 | MIT | cmake |
JSON Voorhees | C++ 的杀手 JSON (文档 | Apache-2.0 | cmake) |
JSON++ | |||
json-cpp | |||
json11 | json11 是 C++11 的轻量 JSON 库,提供 JSON 分析及序列化。 | MIT | cmake |
JsonBox | 用于轻易且快速读写 JSON 的 C++ 库。 | MIT | cmake |
swxJson | 目前使用最便利的C++JSON库。读写任何层级的复杂结构,只需一个函数调用。性能大概是RapidJSON的1/2。 | MIT | make |
jsoncons | JSON 与类 JSON 数据结构库,含 JSON Pointer、JSON Patch、JSONPath、CSV、MessagePack、CBOR、BSON、UBJSON。 | 自定义 | 仅头文件 |
jsoncpp | 允许操作 JSON 值的库,包括序列化和反序列化,同时保留注释。 | MIT | cmake, conan, vcpkg |
jsonme-- | |||
libjson | |||
minijson | C++ 无 DOM 且免分配的 JSON 分析及序列化 | 自定义 | cmake |
Neyson | 轻量级 C++11 JSON 库 | BSD-3-Clause | cmake |
nosjob | 用于生成和消费 JSON 数据的 C++98 库 | MIT | make |
qjson | |||
rapidjson | C++ 的快速 JSON 分析器/生成器,同时提供 SAX/DOM 风格 API,支持 UTF-8/16/32,可以使用 SIMD。 (文档) | 自定义 | 仅头文件; cmake, vcpkg |
simdjson | 每秒解析 GB 级别的 JSON,利用现代未加工和 SIMD 并行化的优势 (文档) (Kino) | Apache-2.0 | cmake, vcpkg |
struct_mapping | 在 JSON 和 C++ 结构之间映射 | MIT | cmake |
swxJson | 当前使用中最方便的 C++JSON 库。可以用一个函数调用在复杂结构中的任意层进行读写。性能大约有 RapidJSON 的一半。 | MIT | make |
ThorsSerializer | JSON/BSON/YAML 输入输出流 | MIT | make |
ujson | µjson 是小型的 C++11、UTF-8 JSON 库 | cmake | |
yyjson | 以 ANSI C 编写的高性能 JSON 库 | MIT | cmake |
zoolib |
- TOML
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
toml++ | TOML 解析器和序列化器,用于 C++17 及以上 | ||
toml11 | 基于 C++11 的 TOML 解析库 |
- XML
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
ai-xml | 通过向雷中添加单个最简函数实现在对象和 XML 之间的序列化。内部使用 libxml++。 | AGPL-3.0 | make |
GPDS | 对象与 XML 之间的通用数据序列化器。内部使用 TinyXML。 | ||
gSOAP | XML 数据绑定 | ||
libxml++ | libxml++ 是 libxml XML 解析器 C 库的 C++ 包装。(文档) | LGPL-2 | |
pugixml | C++ 轻量级、简单且快速的 XML 解析器,支持 XPath。 | MIT | cmake, conan |
tinyxml | |||
tinyxml2 | 另一 TinyXML,建设中。 | ||
Xerces |
- YAML
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
yaml-cpp | C++ 的 YAML 解析器和生成器 | MIT | cmake |
[编辑] 容器
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Boost.Bimap | 双向映射库,提供 bimap<X,Y> 等关联容器,其中 X 和 Y 都可以用作键。(源码)
|
BSL-1.0 | |
Boost.Container | 实现多种周知容器的库,包括标准库式容器,递归容器,以及新的有用容器:flat_map , flat_set , flat_multimap , flat_multiset , stable_vector , static_vector , small_vector , devector . (源码)
|
BSL-1.0 | 仅头文件 |
Boost.Fusion | 用于处理 元组 的异质集合的库。它提供一组容器(vector , list , set 和 map ),以及对它们底层数据的变换表示方法,即 视图。 (源码)
|
BSL-1.0 | |
Boost.Heap | 一种 优先级队列 实现,提供比标准库更丰富的功能和不同的性能特性。 (源码) | BSL-1.0 | |
Boost.Pointer Container | 提供以异常安全的方式和最小开销持有 堆分配对象 的容器。(源码) | BSL-1.0 | |
Boost.Tuple | 实现 C++11 前的 n-tuple (固定大小的元素集合) (源码)
|
BSL-1.0 | |
Boost.Variant | 实现 C++17 前的 variant (安全、通用、基于栈的可区分 union 容器) (源码)
|
BSL-1.0 | |
C++ Allocators | 遵循标准库的分配器,用于固定大小的静态和基于栈的内存 + 另一种遵循标准的自定义分配边界的分配器 | BSD-3-Clause | cmake, make |
cpp-btree | 更好利用 CPU 缓存的 B-树容器:btree_map , btree_set , btree_multimap , btree_multiset 。(源码)
|
Apache-2.0 | 仅头文件; cmake |
DataFrame | 用于统计、金融和机器学习分析的 C++ DataFrame —— 现代 C++ 中使用原生类型、连续内存存储,且无虚函数的 R 与 Pandas 数据框架。 | BSD-3-Clause | cmake, make, conan, vcpkg |
eggs::variant | Eggs.Variant 是 C++11/14 的泛型、线程安全的可区分联合体。值得注意的是它有很好的 constexpr 支持。 | BSL-1.0 | cmake |
Frozen | C++14 的 constexpr 基于完美散列的不可变集合、映射与算法。 | Apache-2.0 | 仅头文件; cmake |
Immer | 持久且不可变数据结构 | Boost | cmake |
plf::colony | 无序的“类背包”容器,在高度修改场景中性能优于 std:: 容器,同时维护指向未被擦除元素的合法指针,无关乎插入或擦除。C++98/11/14/等 兼容。另见 P0447 (std::hive ). (源码)
|
zlib | conan build2 |
plf::list | std::list 实现,为缓存友好牺牲范围切割,导致更快的插入、擦除和迭代。C++98/03/11/14/17/20/23/26/等 兼容。(源码) (文档) | zlib | — |
plf::reorderase | 对随机访问容器扩展并优化的 "swap-and-pop"/"move-and-pop" 手法,以提高擦除后顺序不重要场合下随机访问容器的擦除性能。涵盖单元素,范围,和 std::erase_if 风格的擦除。C++98/11/14/等兼容。(源码)
|
zlib | |
plf::queue | 对 std::queue 容器适配器的就地替换容器,在队列���下文中具有比 std::deque 和 std::list 更好的性能。C++98/11/14/等兼容。(源码) | zlib | |
plf::stack | std::stack 容器适配器的就地替换容器,在栈上下文中有优于 std::vector 和 std::deque 的性能。C++98/11/14/等兼容。(源码) | zlib | |
ring_span | Guy Davidson 与 Arthur O'Dwyer 的 ring_span ——即环状缓冲区视图的简化实现。C++98- 兼容。
|
BSL-1.0 | 仅头文件; cmake |
strict_variant | 实时/嵌入式友好(即 -fno-exceptions /-fno-rtti 兼容)的,决不空的 variant ,目标 C++11。阻止许多不想要的隐式转换。
|
BSL-1.0 | cmake |
tiny::optional | std::optional 的替代品,可通过使用哨位值消除存储开销。 | BSL-1.0 | cmake |
TdhLists | |||
Ygg | 高性能容器和数据结构,例如红黑树、区间树和区间映射的侵入式 C++11 实现。 | MIT | 仅头文件; cmake |
[编辑] 密码学
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Botan | 密码学工具箱。(源码) | BSD 2-Clause "Simplified" | make |
crypto++ | 密码学方案的自由 C++ 类库。(源码) | Boost | make |
gnutls | 安全通信库,实现 SSL, TLS 和 DTLS 协议和它们的周边技术。(源码) | LGPL-2.1 | make |
openssl | 通用目的密码学和安全通信的健壮、商用级、全功能工具箱。(源码) | Apache-2.0 | make |
TomCrypt | 相当全面、模块化且可移植的密码学工具箱,为开发者提供大量周知的已发表的块密码算法,单向散列函数,链接模式,伪随机数发生器,公钥加密,和大量其他例程。(源码) | 公共领域 | cmake, make |
[编辑] 数据库
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Boost::MySQL | MySQL 客户端库 | BSL-1.0 | |
cpp-redis | C++11 轻量的 Redis 客户端:异步、线程安全、无依赖、管道化、多平台。(文档) | MIT | cmake |
DTL | 使 ODBC 记录集看起来如 STL 容器一样 (源码) (文档) | ||
EasyQtSql | 轻量 C++11 库(基于 Qt)快速便捷地进行 SQL 查询 | MIT | 仅头文件; qmake |
Galera | Galera 集群是面向 MySQL/MariaDB 的同步多主库复制库 (Galera) 和 Write Set Replication (WSREP) API (源码) | GPLv2 | cmake, scons |
LevelDB | 谷歌开发的、能够处理十亿级别规模 Key-Value 型数据持久性存储的C++ 程序库。(文档) | BSD-3 | cmake |
libpqxx | PostgreSQL 的 C++ 连接器 (源码) | BSD-3 | cmake, make |
lmdb++ | LMDB 嵌入式 B+ 树数据库的 C++11 包装。 | Unlicense | make |
mongocxx | MongoDB 的官方 C++11 驱动库 (文档)。提供 CRUD 操作、索引和聚合的优化的 API。支持 BSON、连接池和认证机制。它为构建利用 MongoDB 的 C++ 应用提供了高性能和可缩放容量的解决方案。 | Apache 2.0 | cmake |
mysql++ | MySQL DB 及其工具 | ||
nanodbc | 本机 C ODBC API 的小型跨平台 C++14 包装 | MIT | cmake |
ODB | C++ 的开源、跨平台且跨数据库的对象关系映射 (ORM) 系统。ODB 支持 MySQL, SQLite, PostgreSQL, Oracle, 和 Microsoft SQL Server 关系数据库,以及 C++98/03 和 C++11 语言标准。 | GPL2 和/或 NCUEL | |
OTL | 基于 C++ 模板的数据库支持库,Oracle DB, ODBC 和 DB2-CLI. (源码) | ||
Pgfe | 现代 C++ 的 PostgreSQL 客户端 (FrontEnd) API | Zlib License | cmake |
QTL | 易用且轻型的 C++ 数据库支持库,支持 MySQL, SQLite 和 ODBC. | Apache-2.0 | make |
QUINCE | QUeries IN C++ Expressions (ORM+EDSL) | Boost | |
QxOrm | C++/Qt 对象关系映射 (ORM) 数据库支持库,支持大多数常见数据库,序列化 (JSON, binary, XML); 独立的多线程 HTTP web server | GPLv3 或私有 | |
redis-cpp | 用于执行 Redis 命令的轻量级 C++17 客户端库。 | MIT | 仅头文件; cmake |
redis-plus-plus | 用 C++ 11 编写的 Redis 客户端, 支持 Redis Sentinel,Redis Cluster,管道,事务,发布订阅,连接池以及类似于 STL 的接口 | Apache-2.0 | cmake |
SOCI | 基于插��的数据库支持库,在普通 C++ 代码中嵌入 SQL 查询;支持的后端有:DB2, Firebird, MySQL, ODBC (通用后端), Oracle, PostgreSQL, SQLite3. (源码) (文档) | Boost | cmake |
SQLAPI++ | C++ 数据库中间件库,支持多种 SQL 数据库系统:Oracle, SQL Server, DB2, Sybase, MySQL, PostgreSQL, SQLite, Informix, InterBase / Firebird, SQLBase, SQL Anywhere, ODBC, MariaDB. (源码) (文档) | 自定义 | make |
SQLiteCPP | 精巧且易用的 C++ SQLite3 包装。 | MIT | cmake, meson, vcpkg |
SQLite ORM | SQL 的嵌入式领域特定语言 (EDSL), 支持 SQLite, 用于现代 C++. | AGPL-3.0, MIT | 仅头文件; cmake, vcpkg |
sqlpp11 | C++ 类型安全的用于 SQL 查询和结果的嵌入式领域特定语言。 | BSD-2 | cmake |
taoPQ | 轻量级 C++17 PostgreSQL 客户端库 | Boost | cmake |
[编辑] 嵌入语言绑定
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
AngelScript | 类似 C++ 的脚本语言。 | ZLib | |
ChaiScript | 易用的 C++ 嵌入式脚本语言。 | BSD-3-Clause | |
cling | 交互式 C++ 解释器,建立于 Clang 和 LLVM 之上,以助力 RAD,创建脚本,可嵌入脚本执行,以及运行时代码生成。(源码) | 自定义 / LGPL | cmake |
ExprTk | 使用简单,易于集成且极其高效的运行时数学表达式分析器和求值引擎。ExprTk 支持多种形式的函数式、逻辑式和向量处理语义,且非常易于扩展。 | ||
Jinx | 为视频游戏设计的脚本语言。 | MIT | cmake |
spidermonkey.dev | Mozilla 的 JavaScript 和 WebAssembly 引擎。 | ||
muparser | C++ 编写的可扩展的高性能数学表达式解析库。 | BSD-2-Clause | cmake |
PythonQt | Qt 框架的动态 Python 绑定。它提供一种将 Python 脚本嵌入到 C++ Qt 应用中的简易方式。 | LGPL 2.1 | |
lua | 一种轻量级多范式脚本语言,主要设计用于嵌入使用。C 库。 | MIT | make |
ScriptCaller | 允许程序员调用 Ruby 脚本的唯头文件库。 | ||
sol2 | 一个绑定 Lua 的现代 C++ 库。 | MIT | 仅头文件; cmake |
v8pp | 将 C++ 函数和类绑定到 V8 JavaScript 引擎中。 | BSL-1.0 | 仅头文件; cmake |
[编辑] 嵌入式/实时系统
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
distortos | 微控制器(ARM, STM32)的面向对象 C++ RTOS (源码) (文档) | MPL-2.0 | cmake |
ETL | 嵌入式模板库 - C++03,为低资源(嵌入式)平台裁剪的可移植模板库 (源码) | MIT | |
QP/C++ | RTOS 内核:基于主动对象和状态机的实时嵌入式框架 | GPLv3 | |
µcuREST | 微控制器的 C++11 REST/JSON 服务器框架 |
[编辑] 文件元数据
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
exempi | |||
exiv2 | |||
libkexiv2 | |||
rarian |
[编辑] 金融计算
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
DataFrame | C++ DataFrame —— 现代 C++ 中使用原生类型、连续内存存储,且无虚函数的 R 与 Pandas 数据框架。 | BSD-3-Clause | cmake, make, conan |
QuantLib | 定量金融库 - 用于定量金融的自由/开源库 | 修改的 BSD |
[编辑] 游戏引擎架构
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Anax | 开源 C++ 实体系统 | MIT | cmake |
Anura | 全功能游戏引擎,Frogatto & Friends 背后的技术支撑 | 自定义开源 | make, vcpkg |
BOX2D | 物理引擎 | MIT | cmake |
EntityPlus | C++17 实体组件系统 | BSD-1.0 | cmake |
EntityX | 快速、类型安全的 C++ 实体组件系统 | MIT | cmake |
EnTT | 用于游戏开发的微型库,以现代 C++ 编写 | MIT | 仅头文件; cmake, bazel, conan, vcpkg, brew, cppget |
[编辑] 通用多媒体
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Kigs-framework | 模块化多目的跨平台框架 | MIT | |
openFrameworks | MIT | ||
SDL | 简单 DirectMedia 层(Simple DirectMedia Layer): 对音频、键盘、鼠标、操纵杆及图形硬件,经由平台上图形 API(OpenGL/Direct3D/Metal/Vulkan)的跨平台低层访问 (文档) (源码) | zlib | cmake |
SFML | 简单快速多媒体库;多平台 (Windows, Linux, macOS 和近期将支持的 Android & iOS); 提供简单接口以简化游戏和多媒体应用开发。它包含五个模块:系统、窗口、图形(OpenGL)、音频和网络。 | zlib/png | cmake |
SIGIL | Sound, Input, and Graphics Integration Library; 文本、形状、输入、音频及 2D 图像的难以置信地简单的跨平台极简库 |
[编辑] 通用
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Abseil | Google 设计以补足 C++ 标准库的开源 C++ 库代码汇集。(文档) (源码) | Apache-2.0 | cmake |
Abstract Intrusive Containers | 比 boost::intrusive 更灵活,但非 STL 兼容。 | ||
Au | C++14 兼容的物理单位库,无依赖,强调安全性、可访问性和性能。(文档) | Apache 2.0 | header-only |
BDE | 来自 Bloomberg L.P. 的 Bloomberg Development Environment 核心库 | Apache | |
Better Enums | 反射性枚举(枚举到字符、迭代等),带 constexpr 支持。 | BSD-2 | 仅头文件, cmake, make |
bitfield.h | 位域结构设施,比基础语言设施更可移植/灵活。 | ||
Boost | 大量通用库的汇集 | BSL-1.0 | |
CAF | C++ Actor Framework (CAF) 是开源的 C++11 行动者模型实现,特性为轻量而快速的行动者实现、消息的模式匹配、网络不可见消息传递及更多 | BSD | |
Cinder | 社区开发的自由开源库,用于专业质量的 C++ 创造性编程。(文档) (源码) | Modified BSD License | CMake |
CommonPP | 多用途库,强调在项目中得出度规。 | BSD | |
composite_op.h | 基础类数据成员自省,繁琐且常常不可重入,但有时有用。 | ||
cpp-mmf | 对 POSIX 或 Windows 封装映射到内存文件的 C++98 库 | ||
cxxomfort | C++ 特性逆向移植( C++11 到 C++03 及 C++1y 提案到 C++11/C++03 )。 | ||
Dlib | 网络、线程、图形用户界面、数据结构、线性代数、机器学习、 XML 及文本分析、数值优化、贝叶斯网络和大量其他任务 | Boost | |
eventpp | C++ 事件库,提供回调、事件派发和事件队列。使用 eventpp,你可以轻易实现信号-插座机制,发布者-订阅者模式,或观察者模式。 | Apache 2.0 | |
fcppt | Freundlich 的 C++ 工具套 (fcppt) 是聚焦于通过提供更好的类型和函数式编程改进 C++ 代码的库汇集。 | ||
Folly | Facebook 开源库。设计带有构思中的实践性和效率设计的 C++14 组件的跨平台库。(文档) | Apache-2.0 | cmake, vcpkg |
GSL | C++ 核心方针支持库的实现,为 Bjarne Stroustrup, Herb Sutter 和 Co 在《C++ 核心方针》中推荐 | MIT | cmake, vcpkg |
gsl-lite | C++98、C++11 及后续版本的 ISO C++ 方针支持库 (GSL) 的一个版本。 | MIT | 仅头文件 |
GUL14 | 来自 DESY 的 C++14 通用工具库: 常用工具函数和类型,包括字符串工具,统计和数值函数,容器,调试方法,等等。(源码) | LGPL-2.1 | meson, vcpkg |
History | 现代 C++17 Undo/Redo 框架 | Unlicense | |
hspp | 实验性库,为 C++ 带来 Haskell 风格的编程 | Apache-2.0 | 仅头文件 |
IP-DOS (tm) | IdeaFarm (tm) Piggyback 分布式操作系统: 一种 C++ 语言的通用编程环境。 | 私有,开源 | Open Watcom 2.0 |
JUCE | 扩展性的成熟跨平台 C++ 工具套 | GPL | |
Kangaru | C++11 与 C++14 的依赖注入容器 | MIT | |
Kerbal | 将现代 STL 设施向后移植到之前版本的标准中。更多功能,更多 constexpr! | LGPL-3.0 | 仅头文件; cmake |
libsourcey | 高速网络化和多媒体编码的跨平台 C++14 库。HTTP 、WebSockets、TURN、STUN、Symple 及更多…… | LGPL-2.1 | cmake |
LLNL/units | 用于测量单位和其间转换,以及测量单位的字符串表示的运行时库 | BSD 3-Clause "New" or "Revised" License | CMake |
Loki | C++ 的设计模式库,包含常见设计模式和手法的灵活实现 | MIT | make |
match(it) | C++17 的轻量级模式匹配库,提供无宏 API | Apache-2.0 | 仅头文件 |
nonstd-lite | *-lite 仓库的亲属(比如 span-lite, scope-lite, expected-lite),包含一些提案或已标准化的 C++17/20/23 库类型的 C++98/11 实现,比如 std::span, std::expected 等。 | BSL-1.0 | 仅头文件 |
nytl | 通用的 C++17 工具模板库。 | BSL-1.0 | 仅头文件 |
OnPosix | 在 POSIX 平台上提供各种抽象(例如线程、网络化、日志、 IPC 等)的 C++ 库。 | ||
Reason | XML、xpath、正则表达式、线程、套接字、HTTP、SQL、日期时间、流、编码与解码、文件系统、压缩 | GPL | |
SaferCPlusPlus | SaferCPlusPlus - 不安全的 C++ 原始工具的安全兼容替换品,包括指针、int 和 std::vector。 | Boost | |
Smart Enum | 给你的枚举 "to_string "、"from_string " 和更多。
|
BSL-1.0 | cmake |
units | 编译时的量纲分析及单位转换库,建立于 C++14 而无依赖。 | MIT | 仅头文件 |
yaal | 另一抽象层 - 算法、集合、任意精度计算、泛型 DSL 文法驱动分析器及更多 | CC BY-ND-NC 4.0 | cmake |
Yato | 现代 C++(14/17) 的跨平台 STL 风格及 STL 兼容库,实现容器、范围、迭代器、类型特征和其他工具;行动者系统;类型安全配置接口 | Apache-2.0 | cmake |
yomm2 | C++17 的开放式多方法 | Boost | |
zoolib | ZooLib 是一个功能丰富的 C++ 工具包 | MIT |
[编辑] GPS
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
gpsd | 开源,跨平台 (Linux/Unix/BSD 变体,包括 Android 和 OS X) GPS 工具集,比如 GPS 设备的转译器和复制器守护进程,AIS 无线电,和其他导航传感器。gpsd 主要以 C 和 Python 编写,但也有 C++ 包装,gpsd 在移动嵌入式系统中普遍使用。每个需要定位功能的 Android 应用都间接是个 gpsd 客户端。(文档) (源码) | BSD 2-clause | scons |
[编辑] 图形用户界面
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Brisk | 跨平台 C++20 模块化 GUI 框架,提供反应式设计和可扩展的 GPU 加速渲染。 (源码), (文档) | GPL2+/私有 | cmake, vcpkg |
Dear ImGui | 具有最小化依赖、可移植、渲染器中立的 C++ 轻量级 GUI 库,为启用 3D 管线的应用而优化 | MIT | vcpkg |
FLTK | 跨平台 C++ GUI 工具包 (Linux, Windows, MacOS),提供现代 GUI 功能,并通过 OpenGL/GLUT 支持 3D 图形。小型和模块化设计。包含一个 UI 构建工具。 | LGPL ver.2 | |
nana | 用现代 C++ 风格的跨平台 GUI 编程。(源码), (文档) | BSL-1.0 | cmake, vcpkg |
nanogui | 最小化的跨平台器件库,适用于 OpenGL 3.x 或更高版本 (文档) | ||
OWLNext | 对 OWL 的现代更新,用于在 Windows 上以标准 C++ 书写 GUI 应用 | ||
Slint | 声明式 GUI 工具包,用于为桌面、嵌入式和微控制器建立本机用户界面。(源码), (文档) | GPL 3, 免版税, 或商用 | cmake |
tiny file dialogs | 一组 C/C++ 跨平台文件对话框(无初始化、无 main 循环、6 种模态的函数调用) | 仅头文件 | |
U++ | 跨平台 (Windows, GNU/Linux, macOS) 带内置 IDE 的快速应用开发框架。C++17 兼容。(文档) (源码) | BSD-3-Clause | make |
WxWidgets | 自由开源跨平台 (Windows, GNU/Linux, macOS) C++ 框架,用于编写使用本机控件的高级 GUI 应用。(文档) | 修改的 LGPL | cmake, make |
xtd | 用于在 Windows, macOS, Linux, iOS, and Android 上创建控制台、GUI 和单元测试应用的现代 C++17/20 框架。(源码) (文档) | MIT | cmake |
- CopperSpice
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
CopperSpice | CopperSpice 是用于开发跨平台软件应用的 C++ 库集合。它使用现代理念的 C++ 并与 STL 无缝结合。CopperSpice 派生自 Qt 框架。(文档) (源码) | LGPL-2.1 | cmake |
CsSignal | 独立的 C++ 具线程信号/槽库 | LGPL-2.1 | cmake |
CsString | 独立的 C++ 具 Unicode 字符串库 | LGPL-2.1 | cmake |
libGuarded | 独立的 C++ 多线程库,用于管理对共享数据的访问 | LGPL-2.1 | cmake |
- GTK+
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
evince | |||
flowcanvas | |||
glibmm | |||
goocanvasmm | |||
gtkmm | GTK+ GUI 库的跨平台 C++ 接口。 | LGPL | |
libglademm | |||
libgnomecanvasmm | |||
webkitgtk |
- Qt
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
libdbusmenu-qt | 设计用于使 DBus 上共享和显示目录结构变得简单易用的小型库。可工作于 QT 和 GTK+ 并简化菜单的构建。 | ||
Qt | (文档) (源码) | ||
QuickQanava | C++14 网络/图可视化库 / Qt 节点编辑器。 | BSD 2.0 | cmake |
qwt5 | 用于技术应用的 Qt Widgets | ||
qwtplot3d | |||
QuickProperties | QObject/QtObject 属性编辑的 C++/QML 库;项目主页: http://www.qanava.org |
- U++
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
U++ | 一种关注程序员生产率的 C++ 跨平台快速应用开发框架。它包括一组库 (GUI, SQL, 等) 和一个集成开发环境。(源码/二进制) | BSD | |
upp-components | 用于 U++ 的第三方包集合,如 TerminalCtrl , MessageCtrl 等。
|
BSD-3-Clause |
[编辑] 图形
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
bgfx | 非常强大的跨平台图形渲染库,支持平台包括 Windows Mac Linux iOS Android Web,渲染后端包括 DX, OpenGL, Metal WebGL, Vulkan 等。(文档) | BSD-2 | make |
cairomm | cairo 图形库的 C++ 包装,cairo 是带有多种输出设备支持的 2D 库:X Window, Quartz, Win32, 图像缓冲区, PostScript, PDF, SVG, OpenGL (实验性). | LGPL | |
dfpsr | 2D, 3D 和单线图软件渲染器,带有桌面 GUI 工具包,最小化依赖,为长期维护而设计,可在没有 3D 加速驱动情况下运行 | zlib | |
gegl | 通用图形库 (GEGL) 是一种基于数据流的图像处理框架,支持浮点处理和非破坏性图像处理能力。(源码) | LGPL | |
io2d | P0267 的参考实现,提案的 ISO C++ 2D 图形 API | BSL-1.0 | cmake |
nanovg | C 编写的基于 OpenGL 的抗锯齿 2D 向量绘图库,用于 UI 和可视化,已移植到 DX11/Metal/bgfx。 | zlib | |
nux | OpenGL 工具包 | LGPL v3 | |
pangomm | Pango 字体布局库的官方 C++ 接口。(源码) | LGPL v2.1 | make |
Skia | C++ 编写的开源 2D 图形库。Skia 图形引擎用于 Google Chrome, Chrome OS, Mozilla Firefox, Android, LibreOffice, Flutter, 等。Skia 有多个后端:软件光栅化,(PDF) 输出,OpenGL, SVG, 等。 | New BSD | |
TXLib | TX 库是一个 C++ 编写的用于 Win32 的微型 2D 图形库。 | ||
ULIS | 跨平台 C++14 库,用于通用数字图像处理,2D 软件光栅化,无限制的图像格式 (u8 , u16 , u32 , float, double), 自定义位序内存布局, 全部 Photoshop 像素混合模式 + 11 个额外模式, 颜色模型 (RGB, HSL, HSV, CMYK, ...), 颜色管理管线, 颜色空间支持 (icm 配置文件和设备无关性), 利用多线程的优化算法, 利用 SIMD 扩展 (SSE2) 的优化算法, 用于优化的图像池和缓存, 动画图像序列的内存存储.
|
自定义 (仅对非商业目的免费) | cmake |
[编辑] 3D 图形
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
assimp | 3D 模型加载 | ||
bgfx | 跨平台、不知图形 API 、“带来你自己的引擎/框架”风格的制图库。 | ||
Diligent Engine | 现代跨平台低层 3D 图形库。 | ||
Epoxy | GLEM 的现代后继者。在 GL 环境的一些种类间抽象,这使得有时比使用 GLEW 更加单。自 2015 起为 GTK+ 项目所用。 | ||
G3D | G3D 创新引擎是一个 C/C++ 编写的全功能,开源,跨平台 (Windows, Linus, Mac OS) 3D 游戏引擎。G3D 已用于商业游戏, 研究论文, 模拟器, 以及大学课程中。它支持实时和离线硬件渲染,光线追踪,模型加载,线性代数,和 GPU 上的通用计算。支持 3DS, OBJ, MP4, PNG, JPG, MD3 和许多其他格式,包括一个原生 OpenGL 可换肤 GUI。 (源码) (文档) | BSD-2 license | |
GLAD | 可定制的轻量库,用于加载 OpenGL 功能 | ||
GLEW | OpenGL 功能加载 | ||
GLFW | OpenGL 窗口管理器 | ||
GLM | OpenGL 数学库 (GLM) 是 C++ 数学库,用于基于 GLSL 规范的图形软件。 | The Happy Bunny (MIT) | 仅头文件; cmake, vcpkg |
Godot | C++17 的全功能多平台 2D 和 3D 游戏引擎,带有一个自身编写的 GUI 编辑器和一个受到 python 启发的脚本语言。 | MIT | scons |
hlsl++ | 用于使用 HLSL 语法进行渲染的 C++ 数学库。支持 SSE 和 NEON | MIT | 仅头文件 |
Horde3D | 小型开源 3D 渲染引擎。努力创建一个提供下一代游戏所需的震撼性视觉效果的图形引擎,并保持轻量级和尽可能简洁。 | ||
Irrlicht | Irrlicht 引擎是一个 C++ 编写的开源实时 3D 引擎。它跨平台,使用 D3D, OpenGL 和其自己的软件渲染器。 | ||
klein | 一个 C++11/14/17 的 SSE 优化的用于图形和动画的投影集合代数库 | ||
Magnum | 游戏和数据可视化的轻量模块化的 C++11/C++14 图形中间件 | ||
O3DE | 开源 3D 引擎 (之前为 Amazon 的 Lumberyard) 是一个 C++ 多平台 3D 引擎,用于构建 AAA 游戏,影院质量 3D 世界,和高真实度模拟。包括物理模拟,脚本引擎,网络,和更多功能。(文档) | Apache 2.0 | cmake |
Ogre3D | OGRE 是一种面向对象图形渲染引擎 - 多用途可视化库,适用于科学可视化,游戏,模拟,虚拟现实和其他图形项目。多平台且非常健壮,有良好的文档。 | MIT | cmake |
Open CASCADE | 3D CAD/CAM/CAE 应用的 SDK | ||
OpenGL | 用于开发 3D 应用的 3D 语言,图形和 SDK。 | ||
OpenSceneGraph | OpenSceneGraph 是一个开源高性能 3D 图形工具包,被可视化模拟,游戏,虚拟现实,科学可视化和建模等领域中的应用开发人员使用。 | ||
Visionaray | C++ 光束追踪模板库 | ||
VTK | 可视化工具包 (VTK) 是一个用于操作并显示科学数据的开源软件。它带有最先进的 3D 渲染工具,用于 3D 交互的部件套件,和可扩展的 2D 制图能力。 | ||
Vulkan | 一组底层 API,移除了上一代图形 API 中的许多抽象。这对提供最大性能很有好处,但其副作用是向开发者暴露了更多复杂性。幸运的是,有不少优秀的教程可以帮助清除这项障碍并快速获得生产力。 |
[编辑] 图像
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Adobe/boost GIL | 高层通用库,聚焦于 2D 图像上操作的算法。非常有限定 I/O 选项。 | BSL-1.0 | |
agge | Anti-Grain Evolution. 一个关注速度和质量的 C++ 2D 图形引擎 | MIT | cmake |
FreeImage | 一个开源库项目,支持流行图形图像格式,如 PNG, BMP, JPEG, TIFF 及其他 | GPLv2, GPLv3, FIPL | |
FreeImageRe | 开源库 FreeImage v3.18 的分支,以支持更新的图像编解码器,经调整更便于使用。维护了所有原来的格式和插件。 | GPLv2, GPLv3, FIPL | cmake |
gegl | |||
GraphicsMagick | 读、写、操纵超过 88 种主要格式的图像。于 2002 年分化自 ImageMagick | Copyright | Mercurial |
SAIL | 读写静态、动画、多页图像,以及元数据和 ICC 配置文件。提供转换能力。以简单性和速度为目标。 | MIT | cmake |
stb | 一组面向 C/C++ 游戏开发的库,提供图像加载/写入/调整大小,字体文本光栅化,类型安全容器,ogg vorbis 解码器,实时 DXT 压缩器,Perlin 噪声发生器,用于玩具 DSL 的词法分析器,快速 sprintf,和更多功能。 | MIT, 自定义 | 仅头文件 |
ThorVG | Thor 向量图形库是一个轻便可移植库,用于绘制包括 SVG 和 Lottie 的基于向量的场景和动画。它可在各种不同软件平台和应用中自由使用以使图形内容可视化。 (源码) | MIT | conan, meson, msys2, vcpkg |
- 格式
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
djvulibre | |||
imagemagick | |||
Kaitai Struct C++ runtime | |||
libraw | |||
openexr | |||
poppler | |||
qimageblitz | |||
SVG++ |
- 绘图
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Matplot++ | 基于 gnuplot 的数据可视化 C++ 图形库。Matplot++ 可以获得以下库的优势:OpenCV, OpenGL, LAPACK, BLAS, FFTW, JPEG, TIFF, ZLIB, PNG, GLAD, GLFW3. (文档) | MIT | cmake |
plotutils | GNU plotutils 包包含 libplot,一个用于导出 2D 向量图形为多种文件格式的 C/C++ 库,支持向量和位图。libplot 可以动画 2D 向量图形,并使用 Postscript 风格 API 进行文件导出和图形动画。 | GPL | |
sciplot | 一个基于 gnuplot 的现代 C++ 科学绘图库,可以导出为 PDF, SVG, PNG, EPS, 等文件格式。 | MIT | 仅头文件; cmake, vcpkg |
[编辑] 图像处理
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
dlib | |||
Halide | 用于高性能图像和张量处理的 C++ 嵌入式 DSL。 | MIT | cmake, vcpkg |
ITK - Insight Toolkit | ITK 是一个开源跨平台库,提供用于图像分析的可扩展软件工具套件。使用极限编程方法论开发。ITK 建立在一个经验证的,面向空间的架构上,它用于二维、三维或更高维的科学图像的处理,分段和注册。 | Apache 2.0 | cmake |
opencv | |||
OTB |
[编辑] 国际化
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
gettext | GNU 国际化库。 | GPL | make |
ICU | Unicode 国际化组件库,是成熟,广泛使用的 C/C++ 库集合,为软件应用程序提供 Unicode 和国际化支持。(源码) | icu4c/LICENSE | make |
spirit-po | 用于分析 po 文件,并提供类似 GNU libintl 的接口的小型库。基于 boost::spirit。 | BSL-1.0 | 仅头文件 |
uni-algo | C/C++ 的 Unicode 算法实现 | MIT/Unlicense | cmake, conan, vcpkg |
[编辑] 日志
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Backward | 打印漂亮的 Python 风格栈追踪,带颜色和源代码片段,特别是在崩溃时。 | MIT | 仅头文件; cmake, conan |
Boost.Log | 跨平台日志库,易用,可扩展,高性能。 | BSL-1.0 | |
clutchlog | 单头文件日志系统,目标是多用途调试而非服务事件存储。 | BSD | cmake |
glog | Google 日志库,基于 C++ 式流,C++98 | License | bazel, cmake, vcpkg |
Log4cplus | 跨平台,C++17 日志 API(模仿 Java log4j API),提供日志管理及配置上的线程安全、灵活且有任意粒度的控制。 | BSD (two clause) or Apache 2.0 | Autotools, cmake, Visual Studio |
Log4cpp | 用于灵活地记录到文件、系统日志、IDSA 或其他目标的 C++ 类库 | LGPL | |
log4cxx | Apache log4cxx 是 Apache log4j 后的 C++ 模式化记录框架。(源码) | Apache | cmake |
lwlog | 极为快速的同步和异步 C++17 日志库 | MIT | cmake |
Pantheios | 诊断日志 API 库,提供类型安全、效率、泛型和可扩展性的结合 | BSD 风格 | |
plog | C++ 的可移植且简单的日志,少于 1000 行代码 | MPL-2.0 | |
Quill | 跨平台的 C++14 异步低延迟日志库 | MIT | cmake |
spdlog | 超快的 C++ 日志库 | MIT | 仅头文件; cmake, conan |
[编辑] 错误处理
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Boost.LEAF | C++11 轻量级错误处理库: 单头文件形式,无依赖,无动态内存分配,使用或不使用异常处理均可,多线程就绪。(源码) | BSL-1.0 | 仅头文件, cmake |
[编辑] 数学
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
alglib | ALGLIB 是一个跨平台 (Windows/POSIX/Linux) 数值分析和数据处理库。ALGLIB 功能包括:数据分析,优化和非线性求解,插值,线性代数和线性求解,FFT 和许多其他功能。 | 自由 (GPL/Personal/Academic) 和商用 | |
ArrayFire | 用于并行计算的跨平台 (Windows/OSX/Linux) 通用 HPC (CPU/GPU/OpenCL/CUDA/GPGPU) 库。ArrayFire 使用领域有:向量算法,图像处理,计算机视觉,信号处理,线性代数,统计,以及更多。(源码) | 自定义 | |
BigNumber | 创建和计算任意长度整数的 C++ 类 | ||
Boost.Math | 包括几项数学领域中的共线:浮点工具,数学常数,统计分布与函数,统计学,向量函数 - 范数,特殊函数,求根与最小化算法,多项式和关系函数,插值,积分与差分,滤波,复数函数,四元数,八元数,整数工具 (最大公约数与最小公倍数),数列,有理数和连续分数。 | BSL-1.0 | |
Boost.Random | 提供用于产生具有有用性质的随机数的多种生成器和分布函数,比如均匀分布。 | BSL-1.0 | |
Boost.SafeNumerics | C++14,保证正确的整数算术,是内建整数类型的就地替换物。 | BSL-1.0 | 仅头文件 |
C++ Matrix | 高性能且精确(例如极端情况)的矩阵数学库,带表达式模板算术运算符 | ||
CasADi | Symbolic framework for nonlinear optimization and algorithmic differentiation. Supports C++ code generation for symbolic expressions and dynamic connection of compiled generated code. | ||
cpp-measures | 处理物理度量的 C++11 库 | MPL-2.0 | 仅头文件 |
Exact floating-point arithmetic library | |||
G+Smo | 等几何分析的跨平台库 (文档) | MPL-2.0 | cmake |
GNU MP bignum C++ interface | C++ 提供重载函数和运算符的便利类接口。GMP 是一个用于任意精度算术的自由 C 库,在有符号整数、有理数和浮点数上运算。 | GNU LGPL v3 和 GNU GPL v2 | |
libmpdec++ | 跨平台 C 库 (带有 C++ 包装),用于正确舍入的任意精度十进制浮点算术。 | BSD-2-Clause | make, nmake |
NTL | 数论库。NTL 是一个高性能,可移植 C++ 库,提供用于操作有符号任意长度整数,以及整数和无穷场的向量、矩阵和多项式的数据结构和算法。 | LGPLv2.1+ | |
PCGrand | PCG 是一族简单快速的空间高效、统计良好的随机数生成算法。与许多通用 RNG 不同,它们难于被预测。 | Apache | |
RPNX Uniform Smooth Noise | N 维均匀分布的平滑噪声函数,以 C++ 实现。 | ||
SEMT | Compile time symbolic differentiation | ||
stats++ | 先进、广泛的统计软件:数据收集及预处理、统计、机器学习及优化,拥有开放的 C++ 源码。 | ||
StatsLib | 统计分布函数的模板库。 | Apache-2.0 | 仅头文件 |
- 自动机理论
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
State Diagram | 一个易用的层次化有限状态机 C++20 库 (文档) | Apache 2.0 License | |
yasmine | C++11 UML 状态机框架 (文档) (源码) | License | |
UML_StateMachine | UML State Machine 是一个纯 C++20 库,用于静态地定义状态图并予以执行。(文档) | GPLv3 License | CMake |
- 数值类库
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
BigNumber | 一个用于创建并计算任意长整数的 C++ 类 | Apache 2.0 | cmake |
Boost.Multiprecision | 多精度库提供 C++ 的整数、有理数、浮点和实数类型,比 C++ 普通基础(内建)类型提供更大 范围和精度。 | BSL-1.0 | |
cln | CLN 库用于对所有种类的任意精度数值进行高效运算 | GPL | |
CNL | 组合式数值库 - 固定精度数值类型 | BSL-1.0 | cmake, conan |
fpm | C++11 定点数学库,对整数提供标准库浮点功能。当目标平台缺乏 FPU 或需要确定性计算时会有用。 | MIT | 仅头文件; cmake |
Universal Numbers | 取代本机算术类型的 C++17/20 模板库 (整数/十进制/定点/浮点/posits/对数/区间) | MIT | cmake, vcpkg, conan |
- 计算几何
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Boost.Geometry | Boost.Geometry (即通用几何库 GGL),定义了求解几何问题的概念、原语和算法。Boost.Geometry 包含一个维度中立,坐标系中立,且可缩放的核心,基于概念、元函数和标签派发。支持的算法有:面积、长度、周长、质心、凸包、相交(clip),包含(点在多边形内)、距离、包裹 (边缘矩形)、简化、变换,和更多的计算。库支持高精度算术数值 | BSL-1.0 | |
CGAL | 计算几何算法库 | GPL-3.0 or commercial | cmake |
PCL | 点云库 | ||
pmp-library | 多边形网格处理库 | ||
Wykobi | 计算几何库 |
- 图论
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Boost.Graph | BSL-1.0 | ||
CXXGraph | 用于图的表示、操作、分区和算法的 C++17 库 | AGPL-3.0 | header-only; cmake |
GTpo | C++14 有向图建模库,QuickQanava 项目的一部分 | BSD | qmake, cmake |
LEMON | 高效网络建模与优化库,实现常见数据结构和算法,关注组合优化、图和网络。(文档) | License | |
NGraph | 一个简单 C++ (网络)图库 | ||
OGDF | 开放图算法与数据结构框架 - 提供图算法,尤其是自动绘图的 C++ 库。 | GPL v2 or v3 |
- 线性代数
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Armadillo | 用于线性代数和科学计算的 C++ 模板库,提供对 OpenBLAS, Intel MKL, LAPACK, ATLAS, ARPACK, SuperLU 和 FFTW 的包装。可用于机器学习,模式识别,DSP,生物信息学,统计学,金融等领域。 | Apache 2.0 | |
Blasw | C++11 的 BLAS 和一部分 LAPACK 的包装 | BSD-3-Clause | 仅头文件; cmake |
Blaze | |||
Blitz++ | C++ 模板类库,提供高性能致密数组和向量,随机数发生器,和小型向量。 | GPL-3.0, LGPL-3.0, 自定义 | cmake |
Boost.uBLAS | C++ 模板类库,提供 BLAS 等级 1, 2, 3 的功能,包括致密、打包和稀疏矩阵。使用表达式模板。 | BSL-1.0 | |
C++ Matrix | 高性能和精确(比如边界情况)矩阵数学库,提供表达式模板算术运算符 | BSD-3-Clause | cmake, make |
DecompLib | C++11 库,分解向量为正定加权基向量的集合。 | MIT | 仅头文件 |
Dlib - linear algebra tools | |||
Eigen | 用于线性代数的 C++ 模板库:矩阵、向量、数值求解和相关算法。 | MPL2 | cmake, conan |
ETL | |||
IT++ | |||
Matrix | C++ 的易用科学计算库,支持 Linux 和 Windows。 | MIT | cmake |
NumCpp | 实现 Python NumPy 包的 C++ 模板库 | MIT | 仅头文件; cmake, vcpkg, conan |
PETSc | 用于偏微分方程建模的科学应用的并行求解的数据结构和例程套件。支持 MPI,基于 CUDA 或 OpenCL 支持 GPU 计算,也支持混合 MPI-GPU 计算。 | ||
Spectra | 稀疏特征值计算工具包-重新设计的 ARPACK,是一个开源 C++ 类库,用于大规模特征值问题,建立在 Eigen 线性代数库(也是开源仅头文件库)之上。(源码) | MPL-2.0 | 仅头文件; cmake, vcpkg |
Tense | 快速 C++17 表达式模板矩阵和张量库 | BSD-3-Clause | 仅头文件; cmake |
xtensor | 用于数值分析的 C++ 库,提供多维数组表达式。 | BSD |
- 机器学习
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
ANNetGPGPU | 基于GPU(CUDA)的人工神经网络库。 | ||
btsk | 游戏行为树入门套件。 | ||
CNTK | 微软认知工具包(CNTK),一种开源的深度学习工具包。 | ||
Dlib | 机器学习工具 | ||
DLDT | OpenVINO™工具包-深度学习部署工具包 | ||
Evolving Objects | 基于模板的 C++ 演化计算库,可帮助您快速随意地编写自己的随机优化算法。 | ||
FANN | 快速人工神经网络库 | ||
frugally-deep | 仅头文件的库,用于在 C++ 中使用Keras模型。 | ||
gaenari | 基于 C++17 的增量决策树 | Apache-2.0 | cmake |
Genann | 简单神经网络库。 | ||
Kaldi | 语音识别工具包。 | ||
liblinear | |||
libtorch | 流行的 PyTorch Python 库的 C++ 前端(后端以 C++ 编写) | BSD-style | cmake |
MLPACK | 机器学习包 | ||
NCNN | 腾讯开发的、针对移动平台进行了优化的高性能神经网络推理框架 | ||
OpenPose | 实时多人关键点检测库,用于身体,面部,手和脚的检测 | ||
Paddle | 并行化分布式深度学习库 | ||
Recast/Detour | 导航网格生成器和浏览器,主要用于游戏。 | ||
Shogun | 大规模机器学习工具箱 | ||
stats++ | |||
tensorflow | 面向所有人的开源机器学习框架;提供稳定的 C++ API 且主要以 C++ 编写 | Apache-2.0 | bazel |
TensorRT | 用于在 NVIDIA GPU 和深度学习加速器上进行高性能推理的 C++ 库 | ||
tiny-dnn | 基于 C++11 的唯头文件、无依赖的深度学习框架。 | ||
Veles | 用于快速深度学习应用程序开发的分布式平台。 |
- 数值计算
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
LibBF | 由 Bellard 开发的任意精度数值计算库,拥有一个将 π 计算到数十亿位的示例程序 |
- 优化
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
ceres-solver | 用于建模和求解大型复杂优化问题的开源 C++ 库。这是一个功能丰富、成熟且高性能的库,从 2010 年起已用于 Google 的产品中。 | Apache | cmake, conan |
OptimLib | 非线性函数数值优化方法的 C++11 库。 |
- 符号表达式操作
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
CasADi | 用于非线性优化和算法微分的符号框架。支持针对符号表达式的 C++ 代码生成和编译代码后的动态链接。 | LGPLv3.0 | cmake |
ExprTk | C++ 数学表达式工具包库 (ExprTk) 是一个使用简单,易于集成且极其高效的运行时数学表达式解析器和求值引擎。ExprTk 支持多种形式的函数式、逻辑式和向量处理语义,且非常易于扩展。 | MIT | 仅头文件 |
GiNaC | 用于创建集成系统的库,其中嵌入符号操作和更多计算机科学的成熟领域(如计算密集的数值应用,图形界面等。 | GPLv3 | |
mathiu.cpp | C++17 编写的简单计算机代数系统 | Apache-2.0 | cmake |
SEMT | 编译时符号微分 | License | make |
SymbolicC++ | 通用计算机代数系统 | GPLv2 | autoconf |
SymCC | 一个编译器包装,它在编译时向程序中嵌入符号求值,并提供相关的运行时支持库。基本上,编译器向程序插入代码,以对每个值计算符号表达式。实际计算在运行时通过调用支持库来进行。 | GPLv3 | cmake |
SymEngine | 独立的快速 C++ 符号操作库。 | MIT | cmake |
ViennaMath | 一个符号数学库,可以方便地在运行时和编译时实例化、操作并求值数学表达式。 | MIT | cmake |
[编辑] 元编程
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Boost.CallableTraits | 编译时检视并操作所有“可调用”类型的 C++11/17 库。Boost.FunctionTypes 的后继者。 | BSL-1.0 | 仅头文件 |
Boost.Hana | 类型与值的新元编程库 | BSL-1.0 | |
Boost.Metaparse | 编译时分析器库,从编译时字符串产生类型、值和元函数 | BSL-1.0 | |
Boost.Mp11 | C++11 元编程库,用于编译时操作包含类型的数据结构。 | BSL-1.0 | 仅头文件 |
Boost.MPL | 原初元编程库,目标为 C++03,慢 | BSL-1.0 | |
Boost.PFR | 用于基本反射(无需宏)��� C++14 库:通过索引访问用户定义类型的成员,IO 流化。 | BSL-1.0 | 仅头文件 |
Boost.Proto | 构建基于表达式模板的 EDSLs 的库 | BSL-1.0 | |
Brigand | 使用急切元函数,为最佳性能优化 | ||
CoMeta | 轻量的 C++14 元编程库 | 仅头文件 | |
Meta | 使用急切元函数,在 metal 和 brigand 之间,相对于性能妥协 | ||
Metal | 使用急切元函数,100% SFINAE 友好 | ||
refl-cpp | 一个 C++ 的现代编译时反射库,支持重载、末班、属性和代理 | ||
Refureku | 一个 C++17 运行时反射和代码生成库 | MIT | cmake |
visit_struct | 小规模反射库,提供 C++11 的结构体访问器。自容纳,200-400 行代码,取决于如何计算。 |
[编辑] PDF
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
HARU | 用于生成 PDF 文件的自由、跨平台、开源库。(文档) (源码) | Zlib | cmake |
JagPDF | 用于生成 PDF 的自由开源库 (文档) | MIT | |
PoDoFo | 用于 PDF 的自由可移植的 C++17 库 | LGPL-2.0 | cmake, conan, vcpkg |
PDF-Writer | 用于创建、修改 解析 PDF 文件的高性能 C++ 库 | Apache-2.0 | cmake, conan, vcpkg |
[编辑] 物理与模拟
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Bullet | 用于游戏、视觉效果、机器人及强化学习的物理模拟 | ||
HELICS | 用于在不同类型的模拟器之间同步时间并交换数据的协调模拟框架 | BSD 3-Clause "New" or "Revised" | cmake |
ProjectCHRONO | 开源多物理模拟引擎 | ||
ReactPhysics3D | 进行 3D 模拟与游戏的 C++ 物理引擎 |
[编辑] 机器人学
- 机器人认知
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
GTSAM | 传感器融合,SLAM, SFM, VO, 计算机视觉 (源码) | BSD | cmake |
opencv | 计算机视觉和认知、矫正,支持匹配 (源码) (文档) | BSD, Apache 2 | cmake |
[编辑] 序列化
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
ai-xml | 通过添加单个最小的函数到类,在 XML 间序列化及反序列化。在底层使用 libxml++ 。 | ||
Boost.Serialization | BSL-1.0 | ||
C++ XML objects | |||
cereal | C++11 序列化 | BSD | |
cista | 简单、高性能、零复制 C++ 序列化与反射库。(源码) | MIT | cmake |
cppcodec | 用于编码/解码 base64、base32 和十六进制的 C++11 库,有一致而灵活的 API | MIT | 仅头文件 |
GPDS | 通用数据序列化器,用以进行对象和 XML 之间的序列化。内部使用 TinyXML。 | ||
gSOAP | 准确的 XML 序列化 | ||
iguana | 现代、通用且易用的序列化引擎,以 C++17 开发,基于编译时反射。支持格式:JSON, XML, 用户定义。 | Apache-2.0 | cmake |
jios | JSON 序列化 | MIT | cmake |
libs11n | |||
protobuf | 协议缓冲区 (即 protobuf) 是来自 Google 的语言中立、平台中立的用于序列化结构数据的可扩展机制,包括 .proto 文件编译器。(文档) | 自定义 | bazel, cmake |
rpnx-serial | 能(反)序列化如 std::map, std::vector 等类型的库 | ||
Serio | 快速轻便的 C++ 序列化库 | BSD-3-Clause | 仅头文件; cmake |
sweet_persist | |||
ThorsSerializer | C++ JSON 序列化库 | MIT | make |
yaml-cpp | |||
YAS | 又一个序列化库,是一个没有第三方库依赖的 C++11 库。存档可以为二进制、文本或 JSON | Boost | 仅头文件 |
- 二进制序列化
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
binn | 旨在紧凑,快速且易于使用的二进制序列化库,自身是同名格式的实现。 | ||
blobify | C++17 库,仅从结构体定义推断序列化布局。 | Boost | 仅头文件; cmake |
bson-cxx | BSON 格式的 C++11 实现。 | scons | |
fast_ber | C++11 使用 BER/DER 编码规则的高性能序列化。编码布局根据 ASN.1 方案定义。 | ||
UBjsonCpp | 基于 C++14 的高性能 UBJson 读写库 |
[编辑] 排序
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Cpp-sort | 各种排序算法汇集到单个包中。 | MIT | |
Indiesort | 允许对非随机访问容器使用 std::sort (和其他随机访问排序函数) 的函数模板。它还提升了对随机访问容器和数组中存放大型对���时的排序性能 | zlib | |
Timsort | 稳定排序函数模板,对于逆序或半排序的数据,性能优于基于快速排序的算法,包括 std::sort。 | MIT |
[编辑] 系统
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Infoware | 用于不触及命令行拉取系统和硬件信息的 C++ 库。 | Creative Commons v1.0 | cmake |
[编辑] 终端
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
cli | 现代 C++ 交互式命令行界面的跨平台库。 | BSL-1.0 | 仅头文件; cmake, make, nmake, vcpkg |
cwidget | C++ 高层终端界面库,在 GTK+ 和 Qt 上构建,但使用 curses 为其显示层 | GPL v2.0 | make |
replxx | readline 和 libedit 的替换品,支持 UTF-8、语法高亮和提示。 |
[编辑] 测试
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
bandit | C++11 的对人类友好单元测试(源码) | MIT | cmake |
Boost.Test | C++03/11/14/17 单元测试库,大范围平台和编译器上可用。(源码) | BSL-1.0 | cmake, b2 |
Catch2 | 现代、C++ 原生的测试框架,用于单元测试、TDD 和 BDD - 使用 C++14, C++17 和更新 | Boost | cmake |
cppunit | C++ 移植的著名的 JUnit 单元测试框架 | LGPL-2.1 | make |
CUTE | C++ 单元测试简化库 (不依赖静态初始化进行注册), 为 TDD 集成到 Cevelop 中 | MIT | 仅头文件 |
doctest | 单元测试和 TDD 使用的最轻量的特性丰富的 C++ 单头文件测试框架 | MIT | 仅头文件; cmake |
ELFspy | 杜绝假象和间谍的测试 - 仅 Linux | GPL-2.0 | make |
faker-cxx | 现代 C++20 伪造库,用于生成测试数据。 | MIT | cmake |
Google Test | Google 测试和模仿框架。(源码) | BSD 3-Clause "New" or "Revised" | bazel, cmake |
lest | C++11 原生轻量单元测试、TDD 和 BDD 框架(包含 C++98 变体)。 | Boost | 仅头文件; cmake |
liblittletest | 可移植测试框架 | LGPL-2.1 | 仅头文件 |
snitch | 轻量级 C++20 测试框架。 | Boost | cmake |
tunit | Windows、macOS、Linux、iOS 和 Android 上的现代 C++17 单元测试库。官方网站 | MIT | cmake |
[编辑] 文本
- 编码
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
strsuite | 管理具有不同编码的字符串的 C++20 库 | LGPL3.0 | cmake |
uchardet | 实现猜字符串编码的功能,和 Python 里的uchardet 功能基本一样。
|
MOZILLA PUBLIC LICENSE v1.1 | cmake |
win-iconv | Linux 和 Mac 上的字符集编码转换库。iconv 的 Windows 实现基于 Win32 字符集转换 API。
|
公共领域 | cmake |
- Diff/Patch
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
diff_match_patch | 创建并应用针对字符串的补丁 (需要 Qt) | Apache 2.0 | qmake |
- 格式化
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
coformat | std::format 的伴随 C++ 库,提供文本上色和显示风格。 | 公共领域 | 仅头文件 |
fmt | 开源格式化库,提供 C stdio 和 C++ iostream 的快速且安全的替代方案。C++20 std::format 族函数的原型。 | License | cmake, conan |
- 语法分析
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
BNFlite | 轻量文法分析器库 | MIT | 仅头文件 |
Boost.Spirit | 一组用于分析和输出生成的 C++17 库,用表达式模板和模板元编程实现的领域特定嵌入语言 (DSEL) 实现。Spirit 库可以完全用 C++ 来编写目标文法。(源码) (文档) | BSL-1.0 | cmake |
CTRE | 快速的编译时正则表达式,支持编译时和运行时的匹配/搜索/捕获。 | Apache-2.0 | 仅头文件, cmake, vcpkg |
lexy | 一个 C++17 分析器组合器库,可以用一种便利的 C++ DSL 编写分析器,具有手写分析器的全部灵活性和控制力。支持 UTF-8/16/32。(文档) | BSL-1.0 | cmake |
PEGTL | 分析表达式文法的模板库,是一个零依赖的 C++17 仅头文件的分析器组合器库,用于根据一种分析表达式文法 (PEG) 创建分析器。 | Boost | 仅头文件 |
- 搜索
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
clucene | CLucene 是一个跨平台,全功能,开源的索引和搜索引擎/API。(源码) (文档) | LGPL v2.1 | cmake |
Step20 | Ukkonen 的构建后缀树的在线算法,Manber 的构建后缀数组的算法。 | MIT | 仅头文件 |
xapian | 具有索引设施的开源搜索引擎 (源码) (文档) | GPL v2+ | make |
- 模板引擎
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
inja | C++17 的模板引擎 | MIT | 仅头文件;cmake, conan, vcpkg, 等 |
Jinja2C++ | Jinja2 模板的 C++14/17 实现 | MPL-2.0 | cmake,conan |
[编辑] 版本控制
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
cpp-semver | 语义化版本号的 C++ 操作库。 | ||
LibGit2 | 版本控制系统 Git 的核心库。 |
[编辑] 视频
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
crystalhd | |||
gstreamermm | |||
libmatroska | |||
libVLC | |||
mjpegtools | |||
OpenH264 | 多平台、多架构的开源库,支持 H.264 编码解码 (源码) | BSD-2 Clause | meson |
[编辑] Web
库名 | 简述 | 协议 | 配置手段 |
---|---|---|---|
Chromium Embedded | |||
cpp-jwt | |||
Drogon | 基于 C++14/17 的 HTTP web 应用框架,运行于 Linux/macOS/Unix/Windows。 | ||
ffead-cpp | C++ 企业级应用开发框架,遵从 HTTP1/HTTP2/HTTP3,支持多种服务器后端 | Apache 2.0 | cmake |
libhttpserver | 用于构建高性能 RESTful web 服务器的 C++ 库。基于 libmicrohttpd 建立,以向开发者提供 C++ 中创建 HTTP 服务的简单 API。
|
LGPL-v2.1 | autotools |
libkcddb | |||
liblastfm | |||
libmusicbrainz5 | |||
libnavajo | |||
Molybden | 用于构建具有 HTML/CSS/JS GUI 的跨平台 C++ 桌面应用的 SDK。(文档) (源码) | License | npm |
oatpp | 用于 IoT 和高性能 web 服务的强大的可移植轻量零依赖 web 框架。 | ||
QtWebApp | Java Servlets 所启发的 HTTP(s) 服务器,以 C++ 实现 | ||
Tufão | 建立在 Qt 之上的 C++11 的异步 web 框架(文档) | LGPL-2.1, GPL-2.0 | cmake |
uri-template | C++ 的 URI 模板展开和逆匹配 | Apache 2.0 | cmake |
userver | C++ 异步框架 | Apache 2.0 | cmake |
Wt | Web 应用的部件和构造块,内建安全性,PDF 渲染,2D 和 3D 绘图,ORM,图表,身份认证框架。(文档) (源码) | GNU GPL 或商用 |
[编辑] 参阅
非 ANSI/ISO 库的 C 文档
|
[编辑] 外部链接
1. | C++ 单元测试框架列表 — Wikipedia |
2. | A curated list of (awesome) header-only C++ libraries — GitHub |
3. | A curated list of (awesome) C++ and C libraries — GitHub |
4. | Boost C++ 库 — Boost.org |
5. | C++ 开源游戏和框架的大型列表 — GitHub.io |