命名空间
变体
操作

开源 C++ 库列表

来自 cppreference.com
< cpp‎ | 链接

本页面的目标是构建一个全面的开源 C++ 库列表,这样当需要特定功能的实现时,就不必浪费时间在网上搜索(DuckDuckGoGoogleBing 等)。

如果您知道一个对其他人可能有用的库,请在此处添加一个链接。除了库的源代码必须随时可供下载外,没有其他限制。

本页“按原样”提供 - 希望对您有所帮助,但不提供任何保证。可能出现过时、误导或错误的链接。如果您注意到其中之一,如果您能修复错误将不胜感激。

库:目录


内容

[edit] 包管理器

包管理器 描述
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/C++ 包管理器。
xmake 一个基于 Lua 的跨平台 C/C++ 构建工具和包管理器。

[edit]

[edit] 音频

描述 许可证 配置
Amplitude Audio SDK 一个跨平台音频引擎,专为游戏的需求而设计。(Src Apache-2.0 cmake, vcpkg
Aquila 一个开源的跨平台 C++11 DSP 库。 MIT cmake
Aubio 一个用于音频和音乐分析的 C/Python 库。(Src GPL-3.0 make
audioFlux 一个用于音频和音乐分析、特征提取的 C 库。 MIT
Essentia 一个用于音频和音乐分析、描述和合成(MIR)的开源库和工具。(Src Affero GPLv3
FFTW 一个用于计算 DFT(SSE/SSE2/AVX/Altivec/ARM Neon)的库。(Src GPL-2.0 cmake
FMOD 一个易于使用的跨平台音频引擎和音频内容创作工具,用于游戏。 非商业/商业免费 cmake
KFR 一个快速、现代、C++17、开源、跨平台 DSP/DFT 框架,支持音频重采样、FIR/IIR 滤波器、双二阶滤波器(SSE、AVX、AVX-512、ARM NEON)。(Src GPL-2.0 cmake
libsoundio 一个用于跨平台实时音频输入和输出的 C 库。(Src MIT cmake
Maximilian C++ 音频和音乐 DSP 库。 MIT cmake
Miniaudio 一个音频播放和捕获 C 库。(Src 无许可证 单个源文件
ni-media 用于读写音频文件的 C++ 库。 MIT cmake, vcpkg
OpenAL 一个跨平台音频 API。 BSD/LGPL/专有 cmake
PortAudio PortAudio 是一个免费的、跨平台的、开源的音频 I/O 库。(Src MIT cmake, vcpkg
rnnoise 用于音频降噪的循环神经网络。 BSD-3-Clause make
SELA SimplE Lossless Audio。 MIT cmake
SoLoud 用于游戏的简单、可移植的音频引擎。 zlib
Soundtouch SoundTouch 是一个开源的跨平台音频处理库,用于更改音频流或音频文件的速度、音调和播放速率。(Src LGPL-2.1 make
Tonic 在 C++ 中进行简单高效的音频合成。 无许可证
Verovio 一个快速轻量级的音乐记谱雕刻库。(Src LGPL cmake, qmake
Wav2Letter++ 一个完全用 C++ 编写的快速语音识别工具包,它使用 ArrayFire 张量库和 flashlight 机器学习库以实现最大效率。 无许可证 cmake

CD
描述 许可证 配置
libkcompactdisc 一个用于与 CD 交互的库。 GPL v2.0 cmake

指纹识别
描述 许可证 配置
chromaprint Chromaprint 是一个音频指纹库,旨在识别几乎相同的音频。它以牺牲精度和鲁棒性为代价来提高搜索性能。Chromaprint 可以使用多个 FFT 库 - FFmpeg、FFTW3、KissFFT 或 vDSP。 (Src) MIT,LGPL 2.1 cmake
libmusicbrainz MusicBrainz 客户端库 (libmusicbrainz),也称为 mb_client,是一个开发库,面向希望在其应用程序中添加 MusicBrainz 查找功能的开发人员。该库支持 Windows、Linux 和 Mac OS X (Src) LGPL-2.1 cmake
libofa MusicIP 的一个开源音频指纹。 APL make

格式
描述 许可证 配置
AudioFile 一个简单的 C++ 库,用于读取和写入音频文件。 MIT cmake
audio_file 一个处理读取和写入多种常见格式音频文件的库。 (Src) LGPL-2.1 make
dr_libs 用于 C 和 C++ 的单文件音频 (FLAC、MP3、WAV) 解码库。 无许可证
flac FLAC 代表 **F**ree **L**ossless **A**udio **C**odec,这意味着以 FLAC 压缩的音频没有质量损失。FLAC 是最快速、最广泛支持的无损音频编解码器,是非专有的,不受专利限制。 开源,BSD,GPL
LAME LAME 是一个高质量的 MPEG Audio Layer III (MP3) 编码器。 LGPL
libsndfile 一个 C 库,带 C++ 包装器,用于通过一个标准库接口读取和写入包含采样声音(例如 WAV、AIFF)的文件。 (Src) 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 评论和 ID3 标签,以及 FLAC、MPC、Speex、WavPack、TrueAudio、WAV、AIFF、MP4 和 ASF 文件中的 Vorbis 评论。 (Src) LGPLMPL v1.1

[edit] Benchmarking

描述 许可证 配置
benchmark 一个用于对代码片段进行基准测试的库,类似于单元测试。 Apache 2.0 cmake
Celero 一个功能丰富的 C++ 基准测试创作库/框架。使用 C++11 支持 Windows、Linux 和 OSX。 Apache cmake
Criterion 一个用于现代 C++ 的微基准测试库。 MIT 仅限头文件;cmake
gperftools “Google 性能工具”包括一个高性能的多线程 malloc 实现,以及用于对堆分配和 CPU 利用率进行基准测试的工具。 BSD 3-Clause“新”或“修订版” configure
nanobench 一个简单、快速、准确的单头文件微基准测试功能,适用于 C++11/14/17/20。 (Src) MIT 仅限头文件;cmake
picobench 一个微小的(微型)微基准测试库。 MIT 仅限头文件;cmake
plf::nanotimer 一个开销最低的、跨平台的简单计时器类,用于基准测试。 zlib 仅限头文件。

[edit] Communication

描述 许可证 配置
ACE 异步网络、事件多路复用、消息传递 (Src) (Doc) 自定义 make
Apache Thrift Apache Thrift 软件框架,用于可扩展的跨语言服务开发,它将软件堆栈与代码生成引擎相结合,以构建在 C++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Cocoa、JavaScript、Node.js、Smalltalk、OCaml 和 Delphi 以及其他语言之间高效且无缝运行的服务。 (Src) Apache-2.0 cmake, vcpkg
Boost.Asio 异步和同步网络、计时器、串行 I/O BSL-1.0
Boost.Beast 一个基于 Boost.Asio 构建的 HTTP 和 WebSocket 库。 BSL-1.0
Breep 一个基于事件的、高级的、点对点库,允许用户直接发送和接收对象。 欧盟公共许可证 1.1 cmake
brpc 一个在百度广泛使用的工业级 RPC 框架,拥有 1,000,000+ 个实例和数千种服务。 (Src) (Doc) Apache 2.0 cmake
C++ REST SDK 一个异步 HTTP 客户端和监听器、异步流、URI、JSON MIT cmake
cpp-httplib 一个 C++11 单文件仅限头文件的跨平台 HTTP/HTTPS 库。 MIT 仅限头文件;cmake
cpp-netlib 一个 C++ 网络库。 BSL-1.0 cmake
cppsimpleuri 一个现代的 C++ uri 和查询解析器。 MIT cmake
cpr 一个现代的 C++ HTTP 请求库。 MIT cmake
Crow 一个 C++ 微型 Web 框架(受 Python Flask 的启发)。 BSD-3-Clause 仅限头文件;cmake
curlpp libcURL (CURL 库) 的 C++ 包装器。 (Src) cmake, vcpkg
DumaisLib 各种实用程序,如 WebServer、JSON、WebSocket 服务器、REST 框架(一个用于在您的 c++ 应用程序中创建 REST API 的库)。 MIT make
EasyHttp 一个跨平台 HTTP 客户端库,重点关注可用性和速度,支持 HTTP 响应缓存等。 MIT cmake
eCAL 一个高性能的进程间通信库。 Apache 2.0 cmake
fineftp-server 一个用于 Windows 和 Unix 的 FTP 服务器库。 MIT cmake
gRPC 一个现代的开源高性能 RPC 框架,可以在任何环境中运行。 (Src) (Doc) Apache-2.0 bazel,cmake,vcpkg
gsoap 一个用于 XML 数据绑定、快速 WSDL/SOAP/XML Web 服务、WS-Security、JSON/XML-RPC RESTful 服务的 C/C++ 开发工具包。 GPLv2
hmbdc 一个轻量级且高性能的 C++17 消息发布/订阅中间件框架/库。 仅限头文件。
HTTPP 一个简单的、C++14 的、生产就绪的 HTTP 服务器,构建在 Boost 之上,以及一个构建在 libcurl 之上的客户端。 BSD 2-Clause“简化版” cmake,make
IXWebSocket 一个开源的 WebSocket + HTTP 库,没有依赖关系,支持 SSL 和每条消息 deflate WebSocket 扩展。 BSD 3-Clause“新”或“修订版” cmake,make
KCP 一个快速可靠的 ARQ 协议,帮助应用程序减少网络延迟。 MIT cmake
libashttp 一个异步 HTTP 客户端库。 GNU 宽通用公共许可证 v3.0
libjson-rpc-cpp

一个框架,为 C++ 提供跨平台 JSON-RPC(远程过程调用)支持,完全兼容 JSON-RPC 2.0 和 1.0。

MIT cmake,conan
libnavajo 一个 C++ 框架,包括一个快速的多线程 http 服务器、HTML5 Websockets、SSL、X509 和 HTTP 身份验证、压缩、cookie 和高级会话管理、IPv4 和 IPv6 (CeCILL-C)。 CeCILL-C 免费软件许可协议 cmake
libtins 一个网络数据包制作和嗅探库 (Src) (Doc) BSD-2 cmake, vcpkg
LiteNetLibPP 一个轻量级可靠的 UDP 库,用于游戏 MIT cmake
mailio MIME 和电子邮件库 BSD 2-Clause“简化版” cmake
nanomsg 一个快速的消息队列,zeromq 的继任者
netif 一个 C++14 库,用于在 Windows、Linux、macOS 和 FreeBSD 上获取网络地址。 BSD 3-Clause“新”或“修订版” 仅限头文件;cmake
nghttp2 HTTP/2 C 库和工具(服务器、客户端、代理和基准测试工具) MIT cmake, configure
ngrest 一个快速且易于使用的 JSON RESTful Web 服务框架 Apache 2.0 cmake
nng 一个快速的消息队列,nanomsg 的继任者
Oat++ 一个 Web 框架:REST-API 和请求实现 (Src) (Doc) Apache 2.0 cmake
omniORB 最快速、最完整、最便携的 C++ 中 CORBA ORB 实现
OpenDDS DDS(数据分发服务)实现
Paho MQTT 来自 Eclipse 的现代 C++ 客户端,用于 MQTT cmake
paozhu 一个 C++20 Web 框架支持 HTTP/2 ORM WebSocket MIT cmake
PcapPlusPlus 跨平台 C++ 网络嗅探、数据包解析和制作框架。为许多流行的数据包处理引擎(如 libpcap、Npcap、WinPcap、DPDK、AF_XDP 和 PF_RING)提供 C++ 包装器。 (Src) 无许可证 conan, homebrew, cmake, vcpkg
POCO 网络:加密、HTTP;ZIP 文件 (Doc)
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“新”或“修订版” cmake
stream-client 一个轻量级基于 Boost 的客户端套接字/连接器/套接字池/解析器 Apache 2.0 仅限头文件;cmake
tacopie 一个 C++11 TCP 库 MIT cmake
TAO CORBA
taox11 一个基于 C++11 的 CORBA 实现 MIT
Unicomm 异步网络,高级 TCP 通信框架
uvw 一个 libuv(跨平台异步 I/O)包装器,用 C++17 编写 MIT 仅限头文件;cmake
WNetWrap 一个用 C++ 编写的 WinInet 包装器 MIT
wvstreams 一个 C++ 网络库,包括 UniConf 和一个方便的 D-Bus API GPL
zeromq 一个快速的消息队列

[edit] 并发

描述 许可证 配置
AdaptiveCpp 为来自 NVIDIA、AMD、Intel 的 CPU 和 GPU 提供 SYCL 和 C++ 并行 STL 卸载编译器和运行时系统 BSD-2-Clause cmake
Asyncpp 一个异步 c++ 库,提供各种并发操作 MIT cmake
BlockingCollection C++11 线程安全、多生产者、多消费者阻塞队列、堆栈和优先级队列类 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++ 友好的标准 消息传递接口 接口 BSL-1.0
Boost.Thread 支持使用具有共享数据的多个执行线程,以及用于在这些线程之间同步数据的机制。 BSL-1.0
concurrencpp 现代 C++ 并发。任务、执行器、计时器和 C++20 协程。 MIT cmake
dispenso C++ 的高性能并发。parallel_for、Futures、管道、计时器、定时/周期性任务和并发数据结构。 MIT cmake
Highway 提供性能可移植的、与长度无关的 SIMD/向量内联函数。支持:SSE3、SSE4、AVX*、NEON、SVE*、WASM SIMD、RISC-V、POWER。 (Doc) Apache-2.0 cmake
HPX 一个通用的 C++ 运行时系统,用于任何规模的并行和分布式应用程序 (Doc) BSL-1.0 cmake, vcpkg
Intel TBB Intel® TBB 是一个跨平台 C++ 库,用于共享内存并行编程和异构计算。该库提供:通用并行算法、并发容器、可扩展内存分配器、工作窃取任务调度程序和低级同步原语。 (Src) (Doc) Apache-2.0 或商业 cmake,make
KOKKOS 一个用于编写性能可移植 HPC 应用程序的编程模型,使用 CUDA、HIP、SYCL、HPX、OpenMP 和 C++ 线程作为后端 (Doc) 自定义 cmake,make
libopenmpi Open MPI 项目是一个开源的消息传递接口实现 3-clause BSD
libsimdpp 一个可移植的零开销 C++ 低级 SIMD 库。 Boost 仅限头文件;cmake
MPL 一个 C++-17 友好的标准 消息传递接口 接口 BSD 3-Clause“新”或“修订版” 仅限头文件;cmake
MutexGear 一个仅限互斥体的同步(轮询、rwlock、工作队列)C/C++11 库 MutexGear 库 configure, msvc, make
OpenMP OpenMP API 规范,用于并行编程
PoCL 一个可移植的可重定向开源(基于 LLVM)OpenCL 标准实现。 (Src) (Doc) MIT cmake
RaftLib 一个 C++17 流式并发 Actor,可用于并行数据流计算 Apache-2.0 cmake
SObjectizer 一个小型跨平台框架,使用 Actor 和 发布-订阅 模型,用于 C++ 中的并发和事件驱动的应用程序。 BSD-3-Clause cmake, vcpkg, conan
stdgpu GPU 上高效的 STL 式数据结构 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, 单头文件
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 后端的线性代数和算法。(Src) (Doc) 自定义 cmake
Xenium 一个提供各种并发数据结构和回收方案的 C++17 库。 MIT 仅限头文件;cmake

[edit] 配置

描述 许可证 配置
Boost.Program_options 该库允许通过传统方法(如命令行、配置文件和环境变量)从用户处获取程序选项,即(名称、值)对。 BSL-1.0
figcone 通过声明结构体来读取 JSON、YAML、TOML、XML 或 INI 配置 MS-PL cmake
gconfmm 一个跨平台(官方)的 C++ 接口,用于流行的 GUI 库 GTK,包括类型安全的回调,以及一套易于通过继承扩展的综合小部件。gtkmm 使用 STL,包括 strings、容器和迭代器。支持 UTF8。(Src) (Doc) LGPLv2.1 autotools, meson, make
libconfig 一个简单的跨平台 C/C++ 库,用于处理结构化配置文件 ("*.cfg") (Src) (Doc) LGPL 2.1 autotools, cmake, make
libconfini 一个用 C 编写的跨平台 INI 解析器 (Doc) GPL-3.0 autotools, make
uconfig 一个轻量级的 C++17 配置库 Apache 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 参数解析器。 无许可证 仅限头文件;cmake
gflags 一个实现命令行标志处理的库。它包括对字符串等标准类型的内置支持,以及在使用标志的源文件中定义标志的能力。 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 一个 C++ API,用于 JSON,重点在于直观、简洁的接口,尽可能地模拟标准 C++。 make
DAW JSON Link 一个 C++17 库,提供静态 C++ 绑定,具有类型检查,允许直接将解析结果解析到用户数据结构中,而无需库分配,支持推拉模式、分配器支持、constexpr BSL 1.0 cmake
Glaze 最快的 JSON 库之一(C++23),具有直接内存序列化功能。还支持 BEVE 和 CSV。 MIT cmake, conan, build2, vcpkg
jansson 一个用于编码、解码和操作 JSON 数据的 C 库,支持 UTF-8 MIT cmake,make
jeayeson 一个非常明智的 C++14 JSON 库 BSD-3 仅限头文件。
jios JSON 输入输出流 MIT cmake
JOST
json Niels Lohmann JSON for C++11,具有直观的语法 MIT 仅限头文件;bazel, cmake, meson
JSON Voorhees C++11 的杀手级 JSON (Doc) Apache-2.0 cmake
JSON++
json11 一个用于 C++11 的小型 JSON 库,提供 JSON 解析和序列化功能。 MIT cmake
JsonBox 一个 C++ 库,用于轻松快速地读取和写入 JSON。 MIT cmake
jsoncons 一个用于 JSON 和 JSON 类数据格式的库,具有 JSON 指针、JSON 修补程序、JSONPath、CSV、MessagePack、CBOR、BSON、UBJSON。 自定义 仅限头文件。
jsoncpp 一个库,允许操作 JSON 值,包括序列化和反序列化,同时保留注释。 MIT cmake, conan, vcpkg
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。(Doc) 自定义 仅限头文件;cmake, vcpkg
simdjson 利用现代微架构并通过 SIMD 并行化,每秒解析千兆字节 JSON (Doc) (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

TOML
描述 许可证 配置
toml++ 用于 C++17 及更高版本的 TOML 解析器和序列化器
toml11 基于 C++11 的 TOML 解析库

XML
描述 许可证 配置
ai-xml 通过在类中添加单个、最小的函数,将对象序列化为 XML 并从 XML 序列化。使用 libxml++ 在幕后。 AGPL-3.0 make
GPDS 一个通用数据序列化器,用于将对象序列化为 XML 并从 XML 序列化。使用 TinyXML 在幕后。
gSOAP XML 数据绑定
libxml++ libxml++ 是 libxml XML 解析器 C 库的 C++ 包装器。(Doc) LGPL-2
pugixml 一个轻量级、简单且快速的 C++ XML 解析器,支持 XPath MIT cmake,conan
tinyxml
tinyxml2 TinyXML 的另一个正在进行中的项目。
Xerces

YAML
描述 许可证 配置
yaml-cpp 一个 C++ 的 YAML 解析器和发射器 MIT cmake

[edit] 容器

描述 许可证 配置
Boost.Bimap 一个双向映射库,提供诸如 bimap<X,Y> 之类的关联容器,其中 XY 都可以用作键。(Src) BSL-1.0
Boost.Container 一个实现了多个知名容器的库,包括类似 STL 的容器,以及递归容器,以及一些新的实用容器:flat_mapflat_setflat_multimapflat_multisetstable_vectorstatic_vectorsmall_vectordevector。(Src) BSL-1.0 仅限头文件。
Boost.Fusion 一个用于处理异构元组集合的库。提供一组容器 (vectorlistsetmap),以及对其底层数据的转换表示,即视图。(Src) BSL-1.0
Boost.Heap 优先级队列的实现,比 STL 提供的功能更多,性能特征也不同。(Src) BSL-1.0
Boost.Pointer Container 提供用于以异常安全的方式和最小的开销来保存堆分配对象的容器。(Src) BSL-1.0
Boost.Tuple 实现 pre-C++11 n-tuple (一个固定大小的元素集合) (Src) BSL-1.0
Boost.Variant 实现 pre-C++17 variant (一个安全的、通用的、基于堆栈的带歧视的union 容器) (Src) BSL-1.0
C++ Allocators 符合 STL 标准的分配器,用于固定大小的静态和基于堆栈的内存 + 另一个符合 STL 标准的分配器,允许自定义边界分配 BSD-3-Clause cmake,make
cpp-btree B 树容器更好地利用了 CPU 缓存:btree_mapbtree_setbtree_multimapbtree_multiset。(Src) Apache-2.0 仅限头文件;cmake
DataFrame 用于统计、金融和机器学习分析的 C++ DataFrame -- 使用现代 C++、原生类型和连续内存存储 BSD-3-Clause cmake、make、conan、vcpkg
eggs::variant Eggs.Variant 是一个 C++11/14/17 通用、类型安全的带歧视的联合。它特别以其良好的 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)。(Src) zlib conan build2
plf::list 一个 std::list 实现,它牺牲了范围拼接以获得缓存友好性,从而在队列上下文中产生了更快的插入、删除和迭代。C++98/03/11/14/17/20/23/26/等兼容。(Src) (Doc) zlib
plf::reorderase 对随机访问容器的“交换和弹出”/“移动和弹出”习语的扩展和优化,以提高随机访问容器的删除性能,当删除后顺序不重要时。涵盖单一、范围和std::erase_if 样式的删除。C++98/11/14/等兼容。(Src) zlib
plf::queue 一个针对 std::queue 容器适配器的直接替换容器,在队列上下文中比 std::dequestd::list 具有更好的性能。C++98/11/14/等兼容。(Src) zlib
plf::stack 一个针对 std::stack 容器适配器的直接替换容器,在堆栈上下文中比 std::vectorstd::deque 具有更好的性能。C++98/11/14/等兼容。(Src) zlib
ring_span Arthur O'Dwyer 的 ring_span 的轻量级实现,也称为循环缓冲区视图。C++98 兼容。 BSL-1.0 仅限头文件;cmake
strict_variant 一个实时/嵌入式友好(即-fno-exceptions/-fno-rtti 兼容)的、永不为空的 variant,针对 C++11。快速,防止许多不良的隐式转换。 BSL-1.0 cmake
Ygg 一个侵入式的 C++11 高性能容器和数据结构实现,例如 红黑树区间树 和区间映射。 MIT cmake

[edit] 密码学

描述 许可证 配置
Botan 一个密码工具包。(Src) BSD 2-Clause“简化版” make
crypto++ 一个免费的 C++ 密码方案类库。(Src) Boost make
gnutls 一个安全通信库,实现了 SSL、TLS 和 DTLS 协议及其相关技术。(Src) LGPL-2.1 make
openssl 一个强大、商用级、功能齐全的工具包,用于通用密码学和安全通信。(Src Apache-2.0 make
TomCrypt 一个相当全面、模块化且可移植的加密工具包,为开发者提供大量已知公开的块密码、单向哈希函数、链接模式、伪随机数生成器、公钥密码学以及其他大量例程。(Src 公有领域 cmake,make

[edit] 数据库

描述 许可证 配置
Boost::MySQL MySQL 客户端库 BSL-1.0
cpp-redis C++11 轻量级 Redis 客户端:异步、线程安全、无依赖、流水线、跨平台。(Doc MIT cmake
DTL 使 ODBC 记录集看起来像一个 STL 容器。(Src)(Doc
EasyQtSql 一个轻量级 C++11(基于 Qt)库,用于快速轻松的 SQL 查询 MIT 仅包含头文件;qmake
Galera Galera 集群是同步多主复制库(Galera)和 MySQL/MariaDB 的写集复制(WSREP)API。(Src GPLv2 cmake,scons
LevelDB 由 Google 开发的 C++ 库,用于处理十亿级规模的键值数据持久化存储。(Doc BSD-3 cmake
libpqxx PostgreSQL 的 C++ 连接器。(Src BSD-3 cmake,make
lmdb++ LMDB 嵌入式 B+ 树数据库库的 C++11 包装器。 无许可证 make
mongocxx MongoDB 的官方 C++11 驱动库。(Doc)。它提供针对 CRUD 操作、索引和聚合的优化 API。支持 BSON,并提供连接池和身份验证机制,它为构建利用 MongoDB 的 C++ 应用程序提供了高性能和可扩展的解决方案。 Apache 2.0 cmake
mysql++ MySQL 数据库和工具
nanodbc 一个小型、跨平台的 C++14 包装器,用于本机 C ODBC API MIT cmake
ODB 一个开源的、跨平台的、跨数据库的对象关系映射(ORM)系统,用于 C++。ODB 支持 MySQL、SQLite、PostgreSQL、Oracle 和 Microsoft SQL Server 关系数据库,以及 C++98/03 和 C++11 语言标准。 GPL2 和/或 NCUEL
OTL 一个基于 C++ 模板的数据库库,用于 Oracle DB、ODBC 和 DB2-CLI。(Src
Pgfe 现代 C++ 中的 PostgreSQL 客户端(前端)API Zlib cmake
QTL 一个友好且轻量级的 C++ 数据库库,用于 MySQL、SQLite 和 ODBC。 Apache-2.0 make
QUINCE QUeries IN C++ Expressions (ORM+EDSL) Boost
QxOrm 一个用于 C++/Qt 的Object Relational Mapping (ORM) 数据库库,支持大多数常用数据库,序列化(JSON、二进制、XML);独立的多线程 HTTP 网页服务器 GPLv3 或专有
redis-cpp 一个轻量级的 C++17 客户端库,用于执行 Redis 命令。 MIT 仅限头文件;cmake
redis-plus-plus 一个用 C++ 11 编写的 Redis 客户端,支持 Redis Sentinel、Redis 集群、流水线、事务、发布订阅、连接池和类似 STL 的接口 Apache-2.0 cmake
SOCI 一个基于插件的数据库库,将 SQL 查询嵌入到常规 C++ 代码中;支持的后端包括:DB2、Firebird、MySQL、ODBC(通用后端)、Oracle、PostgreSQL、SQLite3。(Src)(Doc Boost cmake
SQLAPI++ 一个支持多个 SQL 数据库系统的中间件 C++ 数据库库:Oracle、SQL Server、DB2、Sybase、MySQL、PostgreSQL、SQLite、Informix、InterBase / Firebird、SQLBase、SQL Anywhere、ODBC、MariaDB。(Src)(Doc 自定义 make
SQLiteCPP 一个精简且易于使用的 C++ SQLite3 包装器。 MIT cmake,meson,vcpkg
SQLite ORM 一个用于现代 C++ 的 SQLite 理解的 SQL 的Embedded Domain-Specific Language (EDSL)。 AGPL-3.0,MIT 仅限头文件;cmake, vcpkg
sqlpp11 一个类型安全的嵌入式领域特定语言,用于 C++ 中的 SQL 查询和结果。 BSD-2 cmake
taoPQ 一个轻量级的 C++17 PostgreSQL 客户端库 Boost cmake

[edit] 嵌入式语言绑定

描述 许可证 配置
AngelScript 一种类似于 C++ 的脚本语言。 ZLib
ChaiScript 一个易于使用的 C++ 嵌入式脚本语言。 BSD-3-Clause
cling 一个交互式 C++ 解释器,构建在 Clang 和 LLVM 之上,以利用 RAD、创建脚本、嵌入式脚本和运行时代码生成。(Src 自定义 / 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
sol2 一个现代 C++ 库,绑定到 Lua。 MIT 仅限头文件;cmake
v8pp 将 C++ 函数和类绑定到 V8 JavaScript 引擎。 BSL-1.0 仅限头文件;cmake

[edit] 嵌入式/实时

描述 许可证 配置
distortos 一个面向对象的 C++11 RTOS,用于微控制器(ARM、STM32)。(Src) (Doc) MPL-2.0 cmake
ETL Embedded Template Library - C++03,一个为低资源(嵌入式)平台量身定制的可移植模板库。(Src MIT
QP/C++ RTOS 内核:基于活动对象和状态机的实时嵌入式框架 GPLv3
µcuREST C++11 REST/JSON 服务器框架,用于微控制器

[edit] 文件元数据

描述 许可证 配置
exempi
exiv2
libkexiv2
rarian

[edit] 财务计算

描述 许可证 配置
DataFrame 一个用于统计、金融和机器学习分析的 C++ DataFrame -- 使用现代 C++、原生类型和连续内存存储。 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 Simple DirectMedia Layer: 一个跨平台(Windows、macOS、Linux、iOS、Android 等)的低级访问音频、键盘、鼠标、操纵杆和图形硬件的库,通过该平台的图形 API(OpenGL/Direct3D/Metal/Vulkan) (文档) (源代码) zlib cmake
SFML Simple and Fast Multimedia Library; 跨平台(Windows、Linux、macOS 以及即将发布的 Android & iOS);提供简单的接口,简化游戏和多媒体应用程序的开发。它由五个模块组成:系统、窗口、图形(基于 OpenGL)、音频和网络。 zlib/png cmake
SIGIL Sound, Input, and Graphics Integration Library; 一个简单、跨平台、极简的库,用于处理文本、形状、输入、音频和 2D 图像。支持的平台:Windows、Linux 和 Raspberry Pi 许可证 cmake

[编辑] 通用

描述 许可证 配置
Abseil Google 开源的 C++ 库代码集合,旨在扩展 C++ 标准库。 (文档) (源代码) Apache-2.0 cmake
抽象侵入式容器 Boost.Intrusive 更灵活,但与 STL 不兼容。
Au 一个 C++14 兼容的物理单位库,没有依赖关系,重点是安全性、可访问性和性能。 (文档) Apache 2.0 仅限头文件。
BDE 来自彭博有限合伙企业的彭博开发环境核心库。 Apache
Better Enums 带 constexpr 支持的反射枚举(枚举到字符串、迭代等)。 BSD-2 仅头文件、cmake、make
bitfield.h 位域结构工具,比基本语言工具更便携/灵活。
Boost 一个大型通用库集合。 BSL-1.0
CAF C++ Actor 框架 (CAF) 是一个开源的 C++11 actor 模型实现,具有轻量级和快速的 actor 实现、消息模式匹配、网络透明消息传递等特性。 BSD
Cinder 一个社区开发的、免费且开源的库,用于在 C++ 中进行专业品质的创意编码。 (文档) (源代码) 修改后的 BSD 许可证 cmake
CommonPP 一个多用途库,非常注重从项目中获取指标。 BSD
composite_op.h 基本类数据成员内省,繁琐且通常不可重入,但有时有用。
cpp-mmf 一个 C++98 库,封装了 POSIX 或 Windows 的内存映射文件。
cxxomfort C++ 特性移植(C++11 到 C++03 以及 C++1y 提案到 C++11/C++03)。
Dlib 网络、线程、图形界面、数据结构、线性代数、机器学习、XML 和文本解析、数值优化、贝叶斯网络,以及许多其他任务。 Boost
eventpp 一个用于回调、事件分派器和事件队列的 C++ 事件库。使用 eventpp,您可以轻松实现信号和槽机制、发布者和订阅者模式或观察者模式。 Apache 2.0
fcppt Freundlich's C++ Toolkit (fcppt) 是一个库集合,专注于通过提供更好的类型和利用函数式编程来改进通用 C++ 代码。
Folly Facebook 开源库。一个跨平台的 C++14 组件库,旨在实用性和效率。 Apache-2.0 cmake, vcpkg
GSL C++ 核心Guidelines Support Library 实现,由 Bjarne Stroustrup、Herb Sutter 等人在 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 撤销/重做框架。 无许可证
hspp 一个实验性的库,将 Haskell 风格的编程引入 C++。 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 一个运行时 C++ 库,用于处理度量单位以及它们之间的转换,以及单位和度量的字符串表示。 BSD 3-Clause“新”或“修订版” cmake
Loki 一个 C++ 设计库,包含常见设计模式和习语的灵活实现。 MIT make
match(it) 一个针对 C++17 的轻量级模式匹配库,具有无宏的 API。 Apache-2.0 仅限头文件。
nonstd-lite 一个 *-lite 存储库列表(例如,span-litescope-liteexpected-lite),其中包含一些提议或已标准化的 C++17/20/23 库类型的 C++98/11 实现,例如 std::spanstd::expected 等)。 BSL-1.0 仅限头文件。
nytl 一个通用的 C++17 实用模板库。 BSL-1.0 仅限头文件。
OnPosix 一个 C++ 库,在 POSIX 平台上提供多种抽象(例如,线程、网络、日志记录、IPC 等)。
Reason XML、xpath、regex、线程、套接字、HTTP、SQL、日期时间、流、编码和解码、文件系统、压缩。 GPL
SaferCPlusPlus 对不安全的 C++ 原语的安全兼容替换,包括指针、intstd::vector Boost
Smart Enum to_stringfrom_string 等用于您的枚举。 BSL-1.0 cmake
units 一个基于 C++14 构建的编译时维度分析和单位转换库,没有依赖项。 MIT 仅限头文件。
yaal Yet Another Abstraction Layer - 算法、集合、任意精度计算、通用 DSL 语法驱动的解析器等等。 CC BY-ND-NC 4.0 cmake
Yato 一个现代的 C++(14/17)跨平台 STL 风格和 STL 兼容库,包含容器、范围、迭代器、类型特征和其他工具;actor 系统;类型安全配置接口。 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 条款许可 scons

[编辑] 图形用户界面

描述 许可证 配置
Dear ImGui 一个轻量级的 C++ GUI 库,依赖项最少,可移植,渲染无关,针对在支持 3D 管道的应用程序中使用进行了优化。 MIT
FLTK 一个跨平台的 C++ GUI 工具包(Linux、Windows、macOS),它提供了现代的 GUI 功能,并通过 OpenGL/GLUT 支持 3D 图形。设计为小型和模块化。包含一个 UI 构建器。 LGPL 版本 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++ 跨平台文件对话框(无需初始化,无需主循环,6 个模态函数调用) 仅限头文件。
U++ 一个跨平台(Windows、GNU/Linux、macOS)快速应用程序开发框架,带有一个捆绑的 IDE。C++17 兼容。(文档)(源代码 BSD-3-Clause make
WxWidgets 一个免费的开源跨平台(Windows、GNU/Linux、macOS)C++ 框架,用于使用原生控件编写高级 GUI 应用程序。(文档 修改后的 LGPL cmake,make
xtd 一个现代的 C++17/20 框架,用于在 Windows、macOS、Linux、iOS 和 Android 上创建控制台、GUI 和单元测试应用程序。(源代码)(文档 MIT cmake

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 小部件
qwtplot3d

U++
描述 许可证 配置
U++ 一个专注于程序员生产力的 C++ 跨平台快速应用程序开发框架。它包含一组库(GUI、SQL 等)和一个集成开发环境。(源代码/二进制文件 BSD
upp-components 一个用于 U++ 的第三方软件包集合,如 TerminalCtrlMessageCtrl 等。 BSD-3-Clause

[编辑] 图形

描述 许可证 配置
bgfx 一个强大的跨平台(Windows、Mac、Linux、iOS、Android、Web)2D/3D 图形渲染着色器感知库,具有渲染后端:DX、OpenGL、Metal、WebGL、Vulkan 等。(文档 BSD-2 make
cairomm 一个用于 cairo 图形库 的 C++ 包装器,这是一个 2D 库,支持多种输出设备:X Window、Quartz、Win32、图像缓冲区、PostScript、PDF、SVG、OpenGL(实验性)。 LGPL
dfpsr 一个 2D、3D 和等轴测软件渲染器,带有桌面 GUI 工具包,依赖项最少,专为长期维护而设计,可以在没有任何 3D 加速驱动程序的情况下运行。 zlib
gegl Generic Graphics Library (GEGL) 是一个基于数据流的图像处理框架,提供了浮点处理和非破坏性图像处理功能。(源代码 LGPL
io2d P0267 的参考实现,该提案是 用于 ISO C++ 的 2D 图形 API BSL-1.0 cmake
nanovg 一个基于 OpenGL 的 C 语言抗锯齿 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 等。 新 BSD 许可
TXLib TX 库是一个用 C++ 编写的针对 Win32 的微型 2D 图形库。
ULIS 一个用于通用数字图像处理的跨平台 C++14 库,2D 软件光栅化器,无限的图像格式(u8u16u32floatdouble),自定义位排序内存布局,所有 Photoshop 像素混合模式 + 11 种附加模式,颜色模型(RGB、HSL、HSV、CMYK,...),颜色管理管道,颜色空间支持(icm 配置文件和设备无关),带有多线程的优化算法,带有 SIMD 扩展的优化算法 (SSE2),用于优化的图像池和缓存,动画图像序列的内存存储。 自定义(仅限非商业用途免费使用) cmake

[编辑] 图形(3D)

描述 许可证 配置
assimp 3D 模型加载 BSD-3 cmake, vcpkg
bgfx 一个跨平台、图形 API 无关的“自备引擎/框架”式渲染库。 BSD-2 make、vcpkg
Diligent Engine 一个现代化的跨平台低级 3D 图形库。 Apache-2.0 cmake
Epoxy GLEW 的现代继承者。抽象化了某些类型的 GL 上下文之间的差异,使其有时比 GLEW 更易于使用。自 2015 年以来,GTK+ 项目一直在使用它。 MIT meson、vcpkg
G3D G3D Innovation Engine 是一个功能齐全的开源跨平台(Windows、Linux、Mac OS)3D 游戏引擎,用 C/C++ 编写。G3D 用于商业游戏、研究论文、模拟器和大学课程。它支持实时和离线硬件渲染、光线追踪、模型加载、线性代数以及 GPU 上的 GP 计算。支持 3DS、OBJ、MP4、PNG、JPG、MD3 以及许多其他格式,包括一个原生 OpenGL 可皮肤化的 GUI。(Src) (Doc) BSD-2
GLAD 一个可定制的、轻量级的 OpenGL 函数加载库。
GLEW 一个 OpenGL 函数加载器 (Src) EXTGL/BSD/MIT make、vcpkg
GLFW 一个 OpenGL 窗口管理器 (Src) (Doc) zlib/libpng cmake, vcpkg
GLM OpenGL Mathematics (GLM) 是一个基于 GLSL 规范的图形软件 C++ 数学库。 The Happy Bunny /
MIT
仅限头文件;cmake, vcpkg
Godot 一个功能齐全的跨平台 2D 和 3D 游戏引擎,用 C++17 编写,带有一个用自身编写的 GUI 编辑器和一个受 Python 启发的脚本语言。 MIT scons
hlsl++ 一个使用 HLSL 语法的渲染 C++ 数学库。支持 SSE 和 NEON MIT 仅限头文件。
Horde3D 一个小型开源 3D 渲染引擎。它是在努力创建一种图形引擎的过程中编写的,该引擎旨在提供下一代游戏中所期望的惊人视觉效果,同时保持轻量级和尽可能简洁。 EPL
Irrlicht Irrlicht Engine 是一个用 C++ 编写的开源实时 3D 引擎。它是一个跨平台引擎,使用 D3D、OpenGL 以及它自己的软件渲染器。 zlib/libpng make、vcpkg
klein 一个针对图形和动画的 C++11/14/17 SSE 优化的射影几何代数库。 MIT cmake, vcpkg
Magnum 一个轻量级的、模块化的 C++11/C++14 图形中间件,用于游戏和数据可视化 (Src) 自定义 cmake
O3DE Open-source 3D Engine(前身是亚马逊的 Lumberyard)是一个 C++ 多平台 3D 引擎,用于构建 AAA 游戏、电影级 3D 世界和高保真模拟。包括物理模拟、脚本引擎、网络以及 更多。(Doc) Apache 2.0 cmake
Ogre3D OGRE 是一个面向对象的图形渲染引擎——一个多用途的可视化库,适用于科学可视化、游戏、模拟、虚拟现实和其他图形项目。它是一个多平台的、非常健壮的引擎,拥有良好的文档。 MIT cmake, vcpkg
Open CASCADE 3D CAD/CAM/CAE 应用程序的 SDK (Src) LGPL-2.1 cmake
OpenGL 用于开发 3D 应用程序的 3D 语言、图形和 SDK。 Khronos (MIT)
OpenSceneGraph OpenSceneGraph 是一个开源的高性能 3D 图形工具包,被应用开发人员用于可视化模拟、游戏、虚拟现实、科学可视化和建模等领域。(Src) (Doc) Custom,
GNU LGPL
cmake, vcpkg
Visionaray 一个 C++ 光线追踪模板库。 MIT cmake
VTK 可视化工具包 (VTK) 是一个开源软件,用于操作和显示科学数据。它附带了用于 3D 渲染的先进工具、一套用于 3D 交互的小部件以及广泛的 2D 绘图功能。 BSD-3 cmake, vcpkg
Vulkan 一个低级 API,它消除了上一代图形 API 中发现的许多抽象。这对提供最大性能很有帮助,但副作用是向开发者暴露了更多复杂性。幸运的是,有几个优秀的教程可以帮助开发者克服这个障碍,并快速提高生产力。 Khronos (MIT) make、vcpkg

[edit] Images

描述 许可证 配置
Adobe/boost GIL 一个高级通用库,专注于对 2D 图像进行操作的算法。I/O 选项非常有限。 BSL-1.0
agge 反粒度演化。一个用于在 C++ 中实现速度和质量的 2D 图形引擎。 MIT cmake
FreeImage 一个开源库项目,面向希望支持 PNG、BMP、JPEG、TIFF 等流行图形图像格式的开发者。 GPLv2, GPLv3, FIPL
FreeImageRe 一个来自开源库 FreeImage v3.18 的分支,以支持图像编解码器的更新并调整以方便使用。所有原始格式和插件都得到保留。 GPLv2, GPLv3, FIPL cmake
GraphicsMagick 读取、写入和操作超过 88 种主要格式的图像。从 2002 年从 ImageMagick 分支而来。 Copyright Mercurial
SAIL 读取和写入静态、动画、多页图像以及它们的元数据和 ICC 配置文件。转换能力。目标是简洁和速度。 MIT cmake
stb 一套面向游戏开发的 C/C++ 库,包含图像加载器/写入器/调整大小器、字体文本光栅化器、类型安全容器、ogg vorbis 解码器、实时 DXT 压缩器、Perlin 噪声生成器、用于宠物 DSL 的词法分析器、快速 sprintf 等等。 MIT, Custom 仅限头文件。

格式
描述 许可证 配置
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。(Doc) MIT cmake
plotutils GNU plotutils 包含 libplot,一个用于以多种文件格式(矢量和位图)导出 2D 矢量图形的 C/C++ 库。libplot 可以动画化 2D 矢量图形,并使用类似 Postscript 的 API 进行文件导出和图形动画。 GPL
sciplot 一个现代的 C++ 科学绘图库,由 gnuplot 提供支持,支持导出到 PDF、SVG、PNG、EPS 等。 MIT 仅限头文件;cmake, vcpkg

[edit] Image Processing

描述 许可证 配置
dlib
Halide 一个 C++ 嵌入式 DSL,用于对图像和张量进行高性能处理。 MIT cmake, vcpkg
ITK - Insight Toolkit ITK 是一个开源的跨平台库,为开发者提供了一套广泛的用于图像分析的软件工具。ITK 通过极端编程方法开发,建立在经过验证的空间定向架构之上,用于处理、分割和配准二维、三维或更多维的科学图像。 Apache 2.0 cmake
opencv
OTB

[edit] Internationalization

描述 许可证 配置
gettext GNU 国际化库。 GPL make
ICU International Components for Unicode 是一个成熟的、广泛使用的 C/C++ 库集,为软件应用程序提供 Unicode 和全球化支持。(Src) icu4c/LICENSE make
spirit-po 一个解析 po 文件的小型库,它提供了一个类似于 GNU libintl 的接口。基于 boost::spirit。 BSL-1.0 仅限头文件。
uni-algo C/C++ Unicode 算法实现 MIT/Unlicense cmake, conan, vcpkg

[edit] 日志记录

描述 许可证 配置
Backward 打印带有颜色和源代码片段的漂亮 Python 风格的堆栈跟踪,尤其是在崩溃时。 MIT 仅头文件;cmake,conan
Boost.Log 一个易于使用、可扩展且性能高的跨平台日志库。 BSL-1.0
clutchlog 单头日志系统,旨在实现多功能调试,而不是服务事件存储。 BSD cmake
glog 基于 C++ 风格流的 C++98 Google 日志库 许可证 bazel,cmake,vcpkg
Log4cplus 跨平台、C++17 日志 API(以 Java log4j API 为模型)提供对日志管理和配置的线程安全、灵活且任意粒度的控制。 BSD(两条款)或 Apache 2.0 Autotools、cmake、Visual Studio
Log4cpp 一个 C++ 类库,用于灵活地将日志记录到文件、syslog、IDSA 和其他目的地。 LGPL
log4cxx Apache log4cxx 是一个 C++ 日志框架,其模式类似于 Apache log4j。(Src) 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

[edit] 错误处理

描述 许可证 配置
Boost.LEAF 一个轻量级的 C++11 错误处理库:单头格式,无依赖项,无动态内存分配,可以与异常处理一起使用或不使用,支持多线程。(Src) BSL-1.0 仅头文件,cmake

[edit] 数学

描述 许可证 配置
alglib ALGLIB 是一个跨平台(Windows/POSIX/Linux)数值分析和数据处理库。ALGLIB 的功能包括:数据分析、优化和非线性求解器、插值、线性代数和线性求解器、FFT 和许多其他功能。 免费(GPL/个人/学术)和商业
ArrayFire 一个跨平台(Windows/OSX/Linux)通用 HPC(CPU/GPU/OpenCL/CUDA/GPGPU)库,用于并行计算。ArrayFire 领域包括:向量算法、图像处理、计算机视觉、信号处理、线性代数、统计学等等。(Src) 自定义
Boost.Math 包括数学领域的一些贡献:浮点数实用程序、数学常数、统计分布和函数、统计学、向量泛函 - 范数、特殊函数、求根和最小化算法、多项式和有理函数、插值、积分和微分、滤波器、复数函数、四元数、八元数、整数实用程序(最大公约数和最小公倍数)、级数、有理数和连分数。 BSL-1.0
Boost.Random 提供各种生成器和分布来生成具有有用属性(例如均匀分布)的随机数。 BSL-1.0
Boost.SafeNumerics C++14,保证正确的整数运算,是内置整数类型的直接替代品。 BSL-1.0 仅限头文件。
cpp-measures 一个 C++11 库,用于处理物理量度 MPL-2.0 仅限头文件。
G+Smo 一个用于等几何分析的跨平台库 (Doc) MPL-2.0 cmake
GNU MP bignum C++ 接口 一个 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
stats++ 高级、全面的统计软件:数据收集和预处理、统计学、机器学习和优化,具有开放的 C++ 源代码。
StatsLib 一个统计分布函数的模板库。 Apache-2.0 仅限头文件。

自动机理论
描述 许可证 配置
yasmine 一个 C++11 UML 状态机框架 (Doc) (Src) 许可证

数字类库
描述 许可证 配置
BigNumber 一个用于创建和计算任意长度整数的 C++ 类 Apache 2.0 cmake
Boost.Multiprecision Multiprecision 库在 C++ 中提供了整数、有理数、浮点数和复数类型,这些类型比 C++ 的普通基本(内置)类型具有更大的范围和精度 BSL-1.0
cln CLN 是一个库,用于对任意精度下的所有类型的数字进行高效计算。 GPL
CNL Compositional Numeric Library - 固定精度数值类型 BSL-1.0 cmake,conan
fpm 一个 C++11 fixed-point math 库,在整数上提供标准库的浮点数功能。如果您的目标平台缺少 FPU 或需要确定性计算,这很有用。 MIT 仅限头文件;cmake
通用数字 一个 C++17/20 模板库,提供对原生算术类型(整数/十进制/定点/浮点数/位置/对数/区间)的插件替换 MIT cmake, vcpkg, conan

计算几何
描述 许可证 配置
Boost.Geometry Boost.Geometry(又名Generic Geometry Library,GGL)定义了解决几何问题的概念、原语和算法。Boost.Geometry 包含一个基于概念、元函数和标签调度的维数无关、坐标系无关且可扩展的内核。支持的算法包括:计算面积、长度、周长、质心、凸包、交点(裁剪)、内部(点在多边形内)、距离、包络(边界框)、简化、变换等等。该库支持高精度算术数字 BSL-1.0
CGAL 计算几何算法库 GPL-3.0 或商业 cmake
PCL 点云库
pmp-library 多边形网格处理库
Wykobi 计算几何库

图论
描述 许可证 配置
Boost.Graph BSL-1.0
CXXGraph 一个用于图表示、操作、分区和算法的 C++17 库 AGPL-3.0 仅限头文件;cmake
GTpo 一个 C++14 有向图建模库,是 QuickQanava 项目 的一部分 BSD qmake,cmake
LEMON Library for Efficient Modeling and Optimization in Networks 实现了一些常见的数据结构和算法,重点关注组合优化、图和网络。(Doc) 许可证
NGraph 一个简单的 C++(网络)图库
OGDF Open Graph algorithms and Data structures Framework - 是一个 C++ 图算法库,特别是用于自动图绘制。 GPL v2 或 v3

线性代数
描述 许可证 配置
Armadillo 一个 C++ 模板库,用于线性代数和科学计算,具有 OpenBLAS、Intel MKL、LAPACK、ATLAS、ARPACK、SuperLU 和 FFTW 的包装器。对 ML、模式识别、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 - 线性代数工具
Eigen 一个用于线性代数的 C++ 模板库:矩阵、向量、数值求解器和相关算法。 MPL2 cmake,conan
ETL
IT++
Matrix 易于使用的科学计算库,适用于 C++,可用于 Linux 和 Windows。 MIT cmake
NumCpp 一个 C++ 模板库,实现 Python 的 NumPy MIT 仅限头文件;cmake、vcpkg、conan
PETSc 一套用于并行求解偏微分方程建模的科学应用的数据结构和例程。它支持 MPI,并通过 CUDA 或 OpenCL 以及混合 MPI-GPU 支持 GPU。
Spectra Sparse Eigenvalue Computation Toolkit as a Redesigned ARPACK 是一个用于大规模特征值问题的开源 C++ 库,构建在 Eigen 线性代数库(也是开源且仅限头文件)之上。(Src) MPL-2.0 仅限头文件;cmake, vcpkg
Tense 一个快速的 C++17 表达式模板矩阵和张量库 BSD-3-Clause 仅限头文件;cmake
xtensor 一个 C++ 库,用于数值分析,带有多维数组表达式。 BSD

机器学习
描述 许可证 配置
Dlib 一个机器学习工具
FANN 一个 Fast Artificial Neural Network 库
gaenari 一个基于 C++17 的增量决策树 Apache-2.0 cmake
liblinear
libtorch 一个流行的 PyTorch Python 库的 C++ 前端(后端是用 C++ 编写的) BSD 风格 cmake
MLPACK 一个机器学习包
Shogun 一个大型机器学习工具箱
stats++
tensorflow 一个面向所有人的开源机器学习框架;提供稳定的 C++ API,主要用 C++ 编写 Apache-2.0 bazel

数值计算
描述 许可证 配置
LibBF 一个由 Bellard 开发的任意精度数值计算库,其中包含一个计算 π 到数十亿位的示例程序 MIT

优化
描述 许可证 配置
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 一个编译时符号微分 许可证 make
SymbolicC++ 一个通用计算机代数系统 GPLv2 autoconf
SymCC 一个编译器包装器,它在编译期间将符号执行嵌入到程序中,以及一个相关的运行时支持库。本质上,编译器会插入计算程序中每个值的符号表达式的代码。实际计算是在运行时通过调用支持库来完成的。 GPLv3 cmake
SymEngine 一个独立的快速 C++ 符号操作库。 MIT cmake
ViennaMath 一个符号数学库,它能够在运行时和编译时方便地实例化、操作和评估数学表达式。 MIT cmake

[edit] 元编程

描述 许可证 配置
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 库:按索引访问用户定义类型的成员,I/O 流。 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/14 提供结构访问器。自包含,200-400 行代码,取决于你如何计算。

[edit] PDF

描述 许可证 配置
HARU 一个免费的、跨平台的、开源的库,用于生成 PDF 文件。(Doc)(Src) zlib/libpng cmake
JagPDF 一个免费的、开源的库,用于生成 PDF (Doc) MIT
PoDoFo 一个免费的、可移植的 C++17 库,用于处理 PDF LGPL-2.0 cmake, conan, vcpkg

[edit] 物理和模拟

描述 许可证 配置
Bullet 一个用于游戏、视觉效果、机器人技术和强化学习的物理模拟
HELICS 一个联合仿真框架,用于同步不同类型仿真器之间的时间和交换数据 BSD 3-Clause“新”或“修订版” cmake
ProjectCHRONO 一个开源的多物理场仿真引擎
ReactPhysics3D 一个用于 3D 模拟和游戏的 C++ 物理引擎库

[edit] 机器人

感知
描述 许可证 配置
GTSAM 传感器融合、SLAM、SFM、VO、计算机视觉 (Src) BSD cmake
opencv 计算机视觉和感知、校准、特征匹配 (Src) (Doc) BSD,Apache 2 cmake

[edit] 序列化

描述 许可证 配置
Boost.Serialization BSL-1.0
C++ XML objects
cereal 一个 C++11 序列化库 BSD
cista 一个简单、高性能、零拷贝的 C++ 序列化和反射库。(Src) MIT cmake
cppcodec 一个 C++11 库,用于以一致、灵活的 API 编码/解码 base64、base32 和 hex MIT 仅限头文件。
GPDS 一个通用数据序列化器,用于将对象序列化为 XML 并从 XML 序列化。使用 TinyXML 在幕后。
gSOAP 一个精确的 XML 序列化库
iguana 一个用 C++17 开发的现代、通用且易于使用的序列化引擎,基于编译时反射。支持的格式:JSON、XML、用户定义。 Apache-2.0 cmake
jios JSON 序列化库 MIT cmake
protobuf Protocol Buffers(又名 protobuf)是 Google 的语言中立、平台中立、可扩展的序列化结构化数据的机制,包括 .proto 文件编译器。(Doc) 自定义 bazel,cmake
rpnx-serial 一个可以(反)序列化诸如 std::mapstd::vector 等类型的库。
Serio 一个快速轻量级的 C++ 序列化库 BSD-3-Clause 仅限头文件;cmake
ThorsSerializer 一个用于 JSON 的 C++ 序列化库 MIT make
yaml-cpp
YAS Yet Another Serialization 是一个 C++11 库,没有第三方库依赖。存档可以是二进制、文本、JSON 格式。 Boost 仅限头文件。

二进制序列化
描述 许可证 配置
binn 一个二进制序列化库,旨在紧凑、快速且易于使用,它本身是同名格式的实现。
blobify 一个 C++17 库,仅从结构定义推断序列化布局。 Boost 仅限头文件;cmake
bson-cxx 一个 C++11 实现的 BSON 格式库。 scons
fast_ber 一个使用 BER/DER 编码规则的高性能 C++11 序列化库。编码布局由 ASN.1 模式定义。
UBjsonCpp 一个基于 C++14 的高性能 UBJson 读写库

[edit] 排序

描述 许可证 配置
Cpp-sort 一个简单包中的各种排序算法集合。 MIT
Indiesort 一个函数模板,允许 std::sort(和其他随机访问排序函数)与非随机访问容器一起使用。它还可以提高在随机访问容器和数组中排序大型对象的性能。 zlib
Timsort 一个稳定的排序函数模板,其性能优于基于快速排序的算法,包括 std::sort,用于反转或半排序数据。 MIT

[edit] 系统

描述 许可证 配置
Infoware 一个 C++ 库,用于获取系统和硬件信息,无需使用命令行。 知识共享署名 1.0 cmake

[edit] 终端

描述 许可证 配置
cli 一个跨平台库,用于在现代 C++ 中创建交互式命令行界面。 BSL-1.0 头文件库;cmake、make、nmake、vcpkg
cwidget 一个面向 C++ 的高级终端界面库,其模型基于 GTK+ 和 Qt,但使用 curses 作为其显示层 GPL v2.0 make
replxx 一个支持 UTF-8、语法高亮和提示的 readline 和 libedit 替代库。

[edit] 测试

描述 许可证 配置
bandit 一个面向 C++11 的人性化单元测试库。(Src) MIT cmake
Boost.Test 一个 C++03/11/14/17 单元测试库,可在各种平台和编译器上使用。(Src) BSL-1.0 cmake,b2
Catch2 一个现代的、C++ 原生的测试框架,用于单元测试、TDD 和 BDD - 使用 C++14、C++17 及更高版本 Boost cmake
cppunit 一个著名的 JUnit 单元测试框架的 C++ 移植版本 LGPL-2.1 make
CUTE 一个C++ Unit Testing Easier(不依赖于静态初始化进行注册)库,集成到 Cevelop 中用于 TDD MIT 仅限头文件。
doctest 一个最轻量级的功能丰富的 C++ 单头测试框架,用于单元测试和 TDD MIT 仅限头文件;cmake
ELFspy 使用模拟和间谍进行隔离测试 - 仅限 Linux GPL-2.0 make
faker-cxx 一个现代的 C++20 Faker 库,用于生成测试数据。 MIT cmake
Google Test Google 测试和模拟框架。(Src) BSD 3-Clause“新”或“修订版” bazel,cmake
lest 一个 C++11 原生的微型框架,用于单元测试、TDD 和 BDD(包括 C++98 版本)。 Boost 仅限头文件;cmake
liblittletest 一个可移植的测试框架 LGPL-2.1 仅限头文件。
snitch 一个轻量级的 C++20 测试框架。 Boost cmake
tunit 一个现代的 C++17 单元测试库,适用于 Windows、macOS、Linux、iOS 和 Android。 官方网站 MIT cmake

[edit] 文本

编码
描述 许可证 配置
strsuite 一个 C++20 库,用于管理不同编码的字符串 LGPL3.0 cmake
uchardet 猜测字符串编码,基本上与 Python 中的 `uchardet` 函数相同。 Mozilla 公共许可证 v1.1 cmake
win-iconv 一个用于 Linux 和 Mac 的字符集编码转换库。Windows 实现的 `iconv` 基于 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 系列的原型。 许可证 cmake,conan

解析
描述 许可证 配置
BNFlite 一个轻量级的语法解析器库 MIT 仅限头文件。
Boost.Spirit 一组用表达式模板和模板元编程实现为Domain Specific Embedded Languages (DSEL) 的 C++17 库,用于解析和生成输出。Spirit 库允许将目标语法完全用 C++ 编写。(Src) (Doc) BSL-1.0 cmake
CTRE 支持在编译时或运行时匹配/搜索/捕获的快速Compile-Time Regular Expressions。 Apache-2.0 仅包含头文件,cmake,vcpkg
lexy 一个 C++17 解析器组合库,允许您通过在方便的 C++ DSL 中指定解析器来编写解析器,同时具有手写解析器的所有灵活性和控制能力。支持 UTF-8/16/32。(Doc) BSL-1.0 cmake
PEGTL Parsing Expression Grammar Template Library 是一个零依赖的 C++17 仅包含头文件的解析器组合库,用于根据 Parsing Expression Grammar (PEG) 创建解析器。 Boost 仅限头文件。

搜索
描述 许可证 配置
clucene CLucene 是一个跨平台、功能齐全、开源的索引和搜索引擎/API。(Src) (Doc) LGPL v2.1 许可 cmake
Step20 Ukkonen 的在线算法用于构建 Suffix tree,Manber 的算法用于构建 Suffix array MIT 仅限头文件。
xapian 一个带有索引功能的开源搜索引擎 (Src) (Doc) GPL v2+ make

模板引擎
描述 许可证 配置
inja 一个用于 C++17 的模板引擎。 MIT 仅包含头文件;cmake,conan,vcpkg 等。
Jinja2C++ Jinja2 模板的 C++14/17 实现 MPL-2.0 cmake,conan

[edit] 版本控制

描述 许可证 配置
coo-semver 一个用于语义版本号的 C++ 操作库。
LibGit2 版本控制系统 Git 的核心库。

[edit] 视频

描述 许可证 配置
crystalhd
gstreamermm
libmatroska
libVLC
mjpegtools
OpenH264 一个支持 H.264 编码和解码的跨平台、多架构、开源库 (Src) BSD-2 条款 meson

[edit] 网络

描述 许可证 配置
Chromium Embedded
cpp-jwt
Drogon 一个基于 C++14/17 的 HTTP 网络应用程序框架,运行在 Linux/macOS/Unix/Windows 上。
ffead-cpp 一个用于framework for Enterprise Application Development in C++ 的framework,符合 HTTP1/HTTP2/HTTP3,支持多个服务器后端 Apache 2.0 cmake
libhttpserver 一个用于构建高性能 RESTful 网络服务器的 C++ 库。构建在 libmicrohttpd 之上,为开发人员提供一个简单的 API,以便在 C++ 中创建 HTTP 服务。 LGPL-v2.1 autotools
libkcddb
liblastfm
libmusicbrainz5
libnavajo
Molybden 用于构建具有 HTML/CSS/JS GUI 的跨平台 C++ 桌面应用程序的 SDK。(Doc) (Src) 许可证 npm
oatpp 一个功能强大、可移植、轻量级且无依赖的网络框架,适用于物联网和高性能网络服务。
QtWebApp 受 Java Servlets 启发的 C++ 中的 HTTP(s) 服务器
Tufão 一个基于 Qt 的异步 C++11 网络框架 (Doc) LGPL-2.1,GPL-2.0 cmake
uri-template 用于 C++ 的 URI 模板扩展和反向匹配 Apache 2.0 cmake
userver C++ 异步框架 Apache 2.0 cmake
Wt 用于网络应用程序的小部件和构建块,内置安全性、PDF 渲染、2D 和 3D 绘制、ORM、图表、身份验证框架。(Doc) (Src) GNU GPL 或商业

[edit] 另请参阅

C 文档 for 非 ANSI/ISO 库

[edit] 外部链接

1.  C++ 单元测试框架列表 — 在维基百科上
2.  一个精选的 (很棒的) 仅包含头文件的 C++ 库列表 — 在 GitHub 上
3.  一个精选的 (很棒的) C++ 和 C 库列表 — 在 GitHub 上
4.  Boost C++ 库 — 在 Boost.org 上
5.  一个庞大的 C++ 开源游戏和框架列表 — 在 GitHub.io 上