开源 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 机器学习库以最大化效率。 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 注释。(源码) 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
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
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
JSON Voorhees C++ 的杀手 JSON (文档 Apache-2.0 cmake)
JSON++
json-cpp
json11 json11 是 C++11 的轻量 JSON 库,提供 JSON 分析及序列化。 MIT cmake
JsonBox 用于轻易且快速读写 JSON 的 C++ 库。 MIT cmake
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
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 实现多种周知容器的库,包括 STL 式容器,递归容器,以及新的有用容器: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 一种 优先级队列 实现,提供比 STL 更丰富的功能和不同的性能特性。 (源码) 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 遵循 STL 的分配器,用于固定大小的静态和基于栈的内存 + 另一种遵循标准的自定义分配边界的分配器 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
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 仅头文件
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

图形用户界面

库名 简述 协议 配置手段
Dear ImGui 具有最小化依赖、可移植、渲染器中立的 C++ 轻量级 GUI 库,为启用 3D 管线的应用而优化 MIT
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, 自定义 仅头文件

格式
库名 简述 协议 配置手段
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/libpng cmake
JagPDF 用于生成 PDF 的自由开源库 (文档) MIT
PoDoFo 用于 PDF 的自由可移植的 C++17 库 LGPL-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 或商用

参阅

外部链接

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