开源 C++ 库列表

来自cppreference.com
< cpp‎ | links


此页面的目的是构建开源 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 机器学习库以最大化效率。 BSD License 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 注释。(源码) LGPLMPL 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++ 库:轮子、读写锁、维持锁、工作队列 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> 等关联容器,其中 XY 都可以用作键。(源码) 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, setmap),以及对它们底层数据的变换表示方法,即 视图。 (源码) 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::dequestd::list 更好的性能。C++98/11/14/等兼容。(源码) zlib
plf::stack std::stack 容器适配器的就地替换容器,在栈上下文中有优于 std::vectorstd::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++ 原始工具的安全兼容替换品,包括指针、intstd::vector Boost
Smart Enum 给你的枚举 "to_string"、"from_string" 和更多。 BSL-1.0 cmake
units 编译时的量纲分析及单位转换库,建立于 C++14 而无依赖。 MIT 仅头文件