开源 C++ 库列表
来自 cppreference.cn
此页面的目标是建立一个全面的开源 C++ 库列表,以便当需要特定功能的实现时,不必浪费时间在网络上搜索(DuckDuckGo,Google,Bing 等)
如果您知道可能对其他人有用的库,请在此处添加链接。对可以包含的内容没有限制,除了库的源代码必须易于获取下载。
该页面“按原样”提供 - 希望有用,但不提供任何保证。 过时、误导性或错误的链接可能会出现在这里。如果您注意到其中之一,如果您修复错误,那将非常棒。
库:目录 |
---|
库 |
[编辑] 包管理器
包管理器 | 描述 |
---|---|
build2 | 一个开源 (MIT)、跨平台构建工具链,旨在近似 Rust Cargo 在开发和打包 C/C++ 项目时的便利性,同时提供更深入和灵活的功能,尤其是在构建系统中。 |
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++ 构建工具和包管理器。 |
[编辑] 库
[编辑] 音频
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
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) | Unlicense | 单源文件 |
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++ 中简单高效的音频合成。 | Unlicense | |
Verovio | 一个快速轻量级的音乐符号雕刻库。(Src) | LGPL | cmake, qmake |
Wav2Letter++ | 一个完全用 C++ 编写的快速语音识别工具包,并使用 ArrayFire 张量库和 flashlight 机器学习库以获得最大效率。 | Unlicense | 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)解码库。 | Unlicense | |
flac | FLAC 代表 Free Lossless Audio Codec(免费无损音频编解码器),这意味着以 FLAC 压缩的音频质量没有损失。FLAC 以其最快和最广泛支持的无损音频编解码器、非专有且不受专利限制而脱颖而出。 | 开源, BSD, GPL | |
LAME | LAME 是一个高质量的 MPEG 音频层 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,FLAC、MPC、Speex、WavPack、TrueAudio、WAV、AIFF、MP4 和 ASF 文件中的 Ogg Vorbis 注释以及 ID3 标签和 Vorbis 注释。(Src) | LGPL 和 MPL v1.1 |
[编辑] 基准测试
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
benchmark | 一个用于基准测试代码片段的库,类似于单元测试 | Apache 2.0 | cmake |
Celero | 一个功能丰富的 C++ 基准测试编写库/框架。使用 C++11 支持 Windows、Linux 和 OSX。 | Apache | cmake |
Criterion | 一个用于现代 C++ 的微基准测试库 | MIT | 仅标头;cmake |
gperftools | “Google Performance Tools”包括一个高性能、多线程的 malloc 实现,以及用于基准测试堆分配和 CPU 利用率的工具。 | BSD 3-Clause "New" 或 "Revised" | configure |
nanobench | 一个简单、快速、准确的单标头微基准测试功能,适用于 C++11/14/17/20。(Src) | MIT | 仅标头;cmake |
picobench | 一个微小的(微)微基准测试库 | MIT | 仅标头;cmake |
plf::nanotimer | 一个最低开销、跨平台的简单计时器类,用于基准测试。 | zlib | 仅标头 |
[编辑] 通信
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
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 | 一个基于事件的、高级的、点对点库,允许用户直接发送和接收对象。 | European Union Public License 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 & query 解析器 | 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 |
FPNN | Fast Programmable Nexus Network(快速可编程 Nexus 网络)。高性能全异步 RPC 服务框架。同时支持 HTTP、WebSocket、TCP 和可靠 UDP。支持超高负载服务器的开发,并提供相应的客户端 SDK。 | 未知 | make |
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 | 一个基于 Boost 构建的简单、C++14、生产就绪的 HTTP 服务器和一个基于 libcurl 构建的客户端。 | BSD 2-Clause "Simplified" | cmake, make |
IXWebSocket | 一个开源的 WebSocket + HTTP 库,没有依赖项,支持 SSL 和 per message deflate WebSocket 扩展。 | BSD 3-Clause "New" 或 "Revised" | cmake, make |
KCP | 一个快速可靠的 ARQ 协议,可帮助应用程序减少网络延迟。 | MIT | cmake |
libashttp | 一个异步 HTTP 客户端库 | GNU Lesser General Public 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 身份验证、压缩、cookies 和高级会话管理、IPv4 和 IPv6 (CeCILL-C)。 | CeCILL-C 自由软件许可协议 | cmake |
libtins | 一个网络数据包制作和嗅探库(Src)(Doc) | BSD-2 | cmake, vcpkg |
LiteNetLibPP | 一个用于游戏的轻量级可靠 UDP 库 | MIT | cmake |
mailio | MIME 和电子邮件库 | BSD 2-Clause "Simplified" | cmake |
nanomsg | 一个快速消息队列,zeromq 的继任者 | ||
netif | 一个 C++14 库,用于获取 Windows、Linux、macOS 和 FreeBSD 上的网络地址。 | BSD 3-Clause "New" 或 "Revised" | 仅标头;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) | Unlicense | 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 "New" 或 "Revised" | cmake |
stream-client | 一个轻量级的基于 Boost 的客户端套接字/连接器/套接字池/解析器 | 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 卸载编译器和运行时系统 | 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、pipelines、timers、timed/periodic tasks 和并发数据结构。 | MIT | cmake |
Highway | 提供性能可移植、长度无关的 SIMD/向量内在函数。支持:SSE3、SSE4、AVX*、NEON、SVE*、WASM SIMD、RISC-V、POWER。(文档) | Apache-2.0 | cmake |
HPX | 一个通用的 C++ 运行时系统,用于任何规模的并行和分布式应用程序(文档) | BSL-1.0 | cmake, vcpkg |
Intel TBB | Intel® TBB 是一个跨平台的 C++ 库,用于共享内存并行编程和异构计算。该库提供:通用并行算法、并发容器、可扩展的内存分配器、工作窃取任务调度器和低级同步原语。(源码) (文档) | Apache-2.0 或商业许可 | cmake, make |
KOKKOS | 一个用于编写性能可移植 HPC 应用程序的编程模型,使用 CUDA、HIP、SYCL、HPX、OpenMP 和 C++ 线程作为后端(文档) | 自定义 | cmake, make |
libopenmpi | Open MPI 项目是一个开源消息传递接口实现 | 3-clause BSD | |
libsimdpp | 一个可移植的零开销 C++ 低级 SIMD 库。 | Boost | 仅标头;cmake |
MPL | 一个对标准 消息传递接口 友好的 C++-17 接口 | BSD 3-Clause "New" 或 "Revised" | 仅标头;cmake |
MutexGear | 一个仅互斥锁同步(轮询、读写锁、工作队列)C/C++11 库 | MutexGear 库 | configure, msvc, make |
OpenMP | 用于并行编程的 OpenMP API 规范 | ||
PoCL | OpenCL 标准的可移植、可重定向的开源(基于 LLVM)实现。(源码) (文档) | MIT | cmake |
RaftLib | 一个 C++17 类流式并发 actor,支持并行数据流计算 | Apache-2.0 | cmake |
SObjectizer | 一个小型跨平台框架,用于在 C++ 中使用 actor 和发布-订阅模型构建并发和事件驱动的应用程序。 | 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 后端的线性代数和算法。(源码) (文档) | 自定义 | 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++ 接口,包括类型安全的 callbacks,以及可通过继承轻松扩展的全面 widget 集。 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 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 | 一个实现命令行标志处理的库。它包括对字符串等标准类型的内置支持,以及在它们使用的源文件中定义标志的能力。 | 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++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 |
Jsonifier | 一些 C++20 类,用于极快的 JSON 解析/序列化 | MIT | cmake |
JSON Voorhees | 适用于 C++11 的 Killer JSON (文档) | Apache-2.0 | cmake |
JSON++ | |||
json11 | 一个微小的 C++11 JSON 库,提供 JSON 解析和序列化。 | MIT | cmake |
JsonBox | 一个 C++ 库,用于轻松快速地读取和写入 JSON。 | MIT | cmake |
jsoncons | 一个用于 JSON 和类 JSON 数据格式的库,带有 JSON Pointer、JSON Patch、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。(文档) | 自定义 | 仅头文件;cmake, vcpkg |
simdjson | 利用现代微架构并行化并使用 SIMD 每秒解析千兆字节的 JSON(文档) (视频) | Apache-2.0 | cmake, vcpkg |
struct_mapping | 将 JSON 映射到 C++ 结构体和从 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 |
- 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++ 封装器。(文档) | LGPL-2 许可 | |
pugixml | 一个轻量级、简单且快速的 C++ XML 解析器,支持 XPath | MIT | cmake, conan |
tinyxml | |||
tinyxml2 | TinyXML 的另一个正在进行中的工作。 | ||
Xerces |
- YAML
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
yaml-cpp | C++ 中的 YAML 解析器和发射器 | MIT | cmake |
[编辑] 容器
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
Boost.Bimap | 一个双向映射库,提供关联容器,例如 bimap<X,Y> ,其中 X 和 Y 都可以用作键。(源码) |
BSL-1.0 | |
Boost.Container | 一个实现多个知名容器的库,包括类 STL 容器,以及递归容器和新的有用容器:flat_map 、flat_set 、flat_multimap 、flat_multiset 、stable_vector 、static_vector 、small_vector 、devector 。(源码) |
BSL-1.0 | 仅标头 |
Boost.Fusion | 一个用于处理元组的异构集合的库。提供一组容器(vector 、list 、set 和 map ),以及它们底层数据的转换表示,也称为视图。(源码) |
BSL-1.0 | |
Boost.Heap | 优先级队列的实现,具有比 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 | B 树容器更好地利用 CPU 缓存:btree_map 、btree_set 、btree_multimap 、btree_multiset 。(源码) |
Apache-2.0 | 仅标头;cmake |
DataFrame | 用于统计、金融和 ML 分析的 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 )。 (源码) |
zlib | conan build2 |
plf::list | 一个 std::list 实现,牺牲了范围拼接以换取缓存友好性,从而产生更快的插入、擦除和迭代。C++98/03/11/14/17/20/23/26/等兼容。(源码) (文档) | zlib | — |
plf::reorderase | 对于随机访问容器的“交换并弹出”/“移动并弹出”惯用语的扩展和优化,以提高 random_access 容器的擦除性能,当擦除后的顺序不重要时。涵盖单个、范围和 std::erase_if 样式的擦除。兼容 C++98/11/14/等等。 (Src) |
zlib | |
plf::queue | std::queue 容器适配器的即插即用替代容器,在队列上下文中具有比 std::deque 和 std::list 更好的性能。兼容 C++98/11/14/等等。 (Src) |
zlib | |
plf::stack | std::stack 容器适配器的即插即用替代容器,在堆栈上下文中具有比 std::vector 和 std::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 |
[编辑] 密码学
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
Botan | 一个密码学工具包。 (Src) | BSD 2-Clause "Simplified" | 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 |
[编辑] 数据库
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
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 封装器。 | Unlicense | make |
mongocxx | MongoDB 的官方 C++11 驱动程序库 (Doc)。它为 CRUD 操作、索引和聚合提供优化的 API。支持 BSON 并具有连接池和身份验证机制,它为构建利用 MongoDB 的 C++ 应用程序提供高性能和可扩展的解决方案。 | Apache 2.0 | cmake |
mysql++ | MySQL 数据库和工具 | ||
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。( Src) | ||
Pgfe | 现代 C++ 中的 PostgreSQL 客户端 (FrontEnd) API | Zlib | cmake |
QTL | 一个友好的、轻量级的 C++ 数据库库,用于 MySQL、SQLite 和 ODBC。 | Apache-2.0 | make |
QUINCE | C++ 表达式中的查询 (ORM+EDSL) | Boost | |
QxOrm | 一个用于 C++/Qt 的对象关系映射 (ORM) 数据库库,支持最常见的数据库、序列化(JSON、二进制、XML);独立的、多线程的 HTTP Web 服务器 | GPLv3 或专有 | |
redis-cpp | 一个轻量级的 C++17 客户端库,用于执行 Redis 命令。 | MIT | 仅标头;cmake |
redis-plus-plus | 一个用 C++ 11 编写的 Redis 客户端,支持 Redis Sentinel、Redis Cluster、管道、事务、发布/订阅、连接池和类似 STL 的接口 | Apache-2.0 | cmake |
SOCI | 一个基于插件的数据库库,将 SQL 查询嵌入到常规 C++ 代码中;支持的后端包括:DB2、Firebird、MySQL、ODBC(通用后端)、Oracle、PostgreSQL、SQLite3。 (Src) (Doc) | Boost | cmake |
SQLAPI++ | 一个中间件 C++ 数据库库,支持多种 SQL 数据库系统: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 | 一个用于 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,创建脚本、可嵌入脚本和运行时代码生成。 (Src) | Custom / 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 | 一个绑定到 Lua 的现代 C++ 库。 | MIT | 仅标头;cmake |
v8pp | 将 C++ 函数和类绑定到 V8 JavaScript 引擎中。 | BSL-1.0 | 仅标头;cmake |
[编辑] 嵌入式/实时
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
distortos | 用于微控制器(ARM、STM32)的面向对象的 C++11 RTOS (Src) (Doc) | MPL-2.0 | cmake |
ETL | 嵌入式 模板 库 - C++03,为低资源(嵌入式)平台量身定制的可移植模板库 (Src) | MIT | |
QP/C++ | RTOS 内核:基于活动对象和状态机的实时嵌入式框架 | GPLv3 | |
µcuREST | 用于微控制器的 C++11 REST/JSON 服务器框架 |
[编辑] 文件元数据
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
exempi | |||
exiv2 | |||
libkexiv2 | |||
rarian |
[编辑] 金融计算
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
DataFrame | 一个用于统计、金融和 ML 分析的 C++ DataFrame -- 在现代 C++ 中使用原生类型和连续内存存储 | BSD-3-Clause | cmake, make, conan |
QuantLib | 一个量化金融库 - 一个用于量化金融的免费/开源库 | 修改的 BSD |
[编辑] 游戏引擎架构
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
Anax | 一个开源 C++ 实体系统 | MIT | cmake |
Anura | 一个功能齐全的游戏引擎,以及 Frogatto & Friends 背后的技术。 | Custom Open Source | 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 层:一个跨平台(Windows、macOS、Linux、iOS、Android 等)的底层访问音频、键盘、鼠标、操纵杆和图形硬件的库,通过该平台的图形 API (OpenGL/Direct3D/Metal/Vulkan) (Doc) (Src) | zlib | cmake |
SFML | 简单 快速 多媒体 库;多平台(Windows、Linux、macOS 以及即将推出的 Android 和 iOS);提供了一个简单的接口,以简化游戏和多媒体应用程序的开发。它由五个模块组成:系统、窗口、图形(基于 OpenGL)、音频和网络。 | zlib/png | cmake |
SIGIL | 声音、输入和图形 集成 库;一个简单的、跨平台的、极简主义的库,用于文本、形状、输入、音频和 2D 图像。支持的平台:Windows、Linux 和 Raspberry Pi | 许可证 | cmake |
[编辑] 通用
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
Abseil | 来自 Google 的开源 C++ 库代码集合,旨在增强 C++ 标准库。 (Doc) (Src) | Apache-2.0 | cmake |
Abstract Intrusive Containers | 比 Boost.Intrusive 更灵活,但不兼容 STL。 | ||
Au | 一个兼容 C++14 的物理单位库,无依赖项,强调安全性、可访问性和性能。 (Doc) | Apache 2.0 | 仅标头 |
BDE | 来自 Bloomberg L.P. 的 Bloomberg 开发环境核心库。 | Apache | |
Better Enums | 具有 constexpr 支持的反射枚举(枚举到字符串、迭代等)。 | BSD-2 | 仅头文件,cmake, make |
bitfield.h | 位字段结构工具,比基础语言工具更便携/灵活。 | ||
Boost | 大量通用库的集合 | BSL-1.0 | |
CAF | C++ Actor Framework (CAF) 是一个开源 C++11 Actor 模型实现,具有轻量级和快速的 Actor 实现、消息模式匹配、网络透明消息传递等功能 | BSD | |
Cinder | 一个社区开发的、免费和开源的库,用于在 C++ 中进行专业质量的创意编码。 (Doc) (Src) | Modified 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 的 C++ 工具包 (fcppt) 是一个库集合,专注于通过提供更好的类型和使用函数式编程来改进通用 C++ 代码。 | ||
Folly | Facebook 开源库。一个跨平台的 C++14 组件库,设计时考虑了实用性和效率。( Doc) | Apache-2.0 | cmake, vcpkg |
GSL | C++ 核心指南支持库实现,由 Bjarne Stroustrup、Herb Sutter 和 Co 在 C++ 核心指南 中推荐 | MIT | cmake, vcpkg |
gsl-lite | ISO C++ 指南支持库 (GSL) 的一个版本,适用于 C++98、C++11 及更高版本 | MIT | 仅标头 |
GUL14 | 来自 DESY 的 C++14 通用实用程序库:常用的实用程序函数和类型,包括字符串实用程序、统计和数值函数、容器、调试方法等。( Src) | LGPL-2.1 | meson, vcpkg |
History | 现代 C++17 撤销/重做框架 | Unlicense | |
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 "New" 或 "Revised" | 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 | C++ 库,在 POSIX 平台上提供多种抽象(例如,线程、网络、日志记录、IPC 等)。 | ||
Reason | XML、xpath、regex、线程、套接字、HTTP、SQL、日期时间、流、编码和解码、文件系统、压缩 | GPL | |
SaferCPlusPlus | 不安全 C++ 原语的安全兼容替代品,包括指针、int 和 std::vector 。 |
Boost | |
Smart Enum | 为您的枚举提供 to_string 、from_string 等功能。 |
BSL-1.0 | cmake |
units | 一个基于 c++14 构建的编译时维度分析和单位转换库,无依赖项 | MIT | 仅标头 |
yaal | 又一个 抽象 层 - 算法、集合、任意精度计算、通用 DSL 语法驱动的解析器等等 | CC BY-ND-NC 4.0 | cmake |
Yato | 一个现代 C++(14/17) 跨平台 STL 风格且 STL 兼容的库,实现了容器、范围、迭代器、类型特征和其他工具;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 客户端。 (Doc) (Src) |
BSD 2 条款 | scons |
[编辑] 图形用户界面
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
Brisk | 跨平台 C++20 模块化 GUI 框架,具有反应式功能和可扩展的 GPU 加速渲染。 (Src), (Doc) | GPL2+/专有 | cmake, vcpkg |
Dear ImGui | 一个轻量级的 C++ GUI 库,依赖项最少,可移植,渲染无关,针对在启用 3D 管道的应用程序中使用进行了优化。 | MIT | vcpkg |
FLTK | 一个跨平台的 C++ GUI 工具包(Linux、Windows、MacOS),提供现代 GUI 功能,并通过 OpenGL/GLUT 支持 3D 图形。设计小巧且模块化。包含一个 UI 构建器。 | LGPL ver.2 | |
nana | 现代 C++ 风格的跨平台 GUI 编程。 (Src), (Doc) | BSL-1.0 | cmake, vcpkg |
nanogui | 一个用于 OpenGL 3.x 或更高版本的极简主义跨平台小部件库 (Doc) | ||
OWLNext | OWL 的现代更新,用于在 Windows 上使用标准 C++ 编写 GUI 应用程序 | ||
Slint | 一个声明式 GUI 工具包,用于为桌面、嵌入式和微控制器构建原生用户界面。 (Src), (Doc) | GPL 3、免版税或商业 | cmake |
tiny file dialogs | 一组 C/C++ 跨平台文件对话框(无需初始化,无需主循环,6 个模态函数调用) | 仅标头 | |
U++ | 一个跨平台(Windows、GNU/Linux、macOS)的快速应用程序开发框架,带有捆绑的 IDE。兼容 C++17。( Doc) (Src) | BSD-3-Clause | make |
WxWidgets | 一个免费和开源的跨平台(Windows、GNU/Linux、macOS)C++ 框架,用于使用原生控件编写高级 GUI 应用程序。 (Doc) | 修改的 LGPL | cmake, make |
xtd | 一个现代 C++17/20 框架,用于在 Windows、macOS、Linux、iOS 和 Android 上创建控制台、GUI 和单元测试应用程序。 (Src) (Doc) | MIT | cmake |
- CopperSpice
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
CopperSpice | 一组用于开发跨平台软件应用程序的 C++ 库。它使用现代惯用的 C++,并与 STL 无缝集成。CopperSpice 源自 Qt 框架。 (Doc) (Src) | LGPL-2.1 | cmake |
CsSignal | 一个独立的、支持线程的 C++ 信号/槽库 | LGPL-2.1 | cmake |
CsString | 一个独立的、支持 Unicode 的 C++ 字符串库 | 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++ 的第三方软件包集合,例如 TerminalCtrl 、MessageCtrl 等。 |
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 | 通用图形库 (GEGL) 是一个基于数据流的图像处理框架,提供浮点处理和非破坏性图像处理功能。 (源码) | LGPL | |
io2d | P0267 的参考实现,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 等。 | New BSD 许可证 | |
TXLib | TX Library 是一个用 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 模型加载 | 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。 (源码) (文档) | BSD-2 | |
GLAD | 一个可定制的轻量级库,用于加载 OpenGL 函数 | ||
GLEW | 一个 OpenGL 函数加载器 (源码) | EXTGL/BSD/MIT 许可证 | make, vcpkg |
GLFW | 一个 OpenGL 窗口管理器 (源码) (文档) | zlib/libpng 许可证 | cmake, vcpkg |
GLM | OpenGL Mathematics (GLM) 是一个 C++ 数学库,用于基于 GLSL 规范的图形软件。 | The Happy Bunny 许可证 / MIT |
仅头文件;cmake, vcpkg |
Godot | 一个功能齐全的跨平台 2D 和 3D 游戏引擎,用 C++17 编写,带有一个用自身编写的 GUI 编辑器和一个受 python 启发的脚本语言。 | MIT | scons |
hlsl++ | 一个 C++ 数学库,用于使用 HLSL 语法进行渲染。支持 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 图形中间件,用于游戏和数据可视化 (源码) | 自定义 | cmake |
O3DE | 开源 3D 引擎 (前身为 Amazon Lumberyard) 是一个 C++ 多平台 3D 引擎,用于构建 AAA 游戏、电影质量的 3D 世界和高保真模拟。包括物理模拟、脚本引擎、网络和更多功能。 (文档) | Apache 2.0 | cmake |
Ogre3D | OGRE 是一个面向对象的图形渲染引擎 - 一个多用途可视化库,适用于科学可视化、游戏、模拟、虚拟现实和其他图形项目。它是多平台的且非常强大,并具有良好的文档。 | MIT | cmake, vcpkg |
Open CASCADE | 用于 3D CAD/CAM/CAE 应用程序的 SDK (源码) | LGPL-2.1 | cmake |
OpenGL | 用于开发 3D 应用程序的 3D 语言、图形和 SDK。 | Khronos (MIT) 许可证 | |
OpenSceneGraph | OpenSceneGraph 是一个开源高性能 3D 图形工具包,被应用程序开发人员用于视觉模拟、游戏、虚拟现实、科学可视化和建模等领域。 (源码) (文档) | 自定义许可证, GNU LGPL 许可证 |
cmake, vcpkg |
Visionaray | 一个 C++ 光线追踪模板库。 | MIT | cmake |
VTK | Visualization Toolkit (VTK) 是一个开源软件,用于操作和显示科学数据。它配备了用于 3D 渲染的先进工具、用于 3D 交互的小部件套件以及广泛的 2D 绘图功能。 | BSD-3 许可 | cmake, vcpkg |
Vulkan | 一个底层 API,它移除了上一代图形 API 中发现的许多抽象。这非常适合提供最大性能,但副作用是向开发人员暴露了更多的复杂性。幸运的是,存在一些优秀的教程来帮助消除这个障碍并快速提高效率。 | Khronos (MIT) 许可证 | make, vcpkg |
[编辑] 图像
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
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 | Open-Source 库 FreeImage v3.18 的一个分支,用于支持图像编解码器更新并调整以方便使用。所有原始格式和插件均已维护。 | GPLv2, GPLv3, FIPL 许可证 | cmake |
GraphicsMagick | 读取、写入和操作超过 88 种主要格式的图像。于 2002 年从 ImageMagick 分叉出来 | 版权所有 | Mercurial 许可证 |
SAIL | 读取和写入静态、动画、多页图像以及它们的元数据和 ICC 配置文件。转换功能。目标是简洁和速度。 | MIT | cmake |
stb | 一组面向 C/C++ 游戏开发的库,具有图像加载器/写入器/调整大小器、字体文本栅格化器、类型安全容器、ogg vorbis 解码器、实时 DXT 压缩器、Perlin 噪声生成器、pet DSL 的词法分析器、快速 sprintf 等。 | MIT, 自定义 许可证 | 仅标头 |
- 格式
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
djvulibre | |||
imagemagick | |||
Kaitai Struct C++ 运行时 | |||
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,一个 C/C++ 库,用于导出多种文件格式(矢量和位图)的 2D 矢量图形。libplot 可以动画化 2D 矢量图形,并使用类似 Postscript 的 API 进行文件导出和图形动画。 | GPL | |
sciplot | 一个现代 C++ 科学绘图库,由 gnuplot 驱动,可以导出为 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 | 国际组件统一码 (ICU) 是一组成熟、广泛使用的 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 | 基于 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 是一个模仿 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/个人/学术)和商业许可证 | |
ArrayFire | 一个跨平台 (Windows/OSX/Linux) 通用 HPC (CPU/GPU/OpenCL/CUDA/GPGPU) 库,用于并行计算。ArrayFire 的领域包括:向量算法、图像处理、计算机视觉、信号处理、线性代数、统计等。 (源码) | 自定义 | |
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 | 一个用于等几何分析的跨平台库 (文档) | 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 状态机框架 (文档) (源码) | 许可证 |
- 数字类库
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
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 定点数学库,在整数上提供标准库的浮点功能。如果目标平台缺少 FPU,或者需要确定性计算,则非常有用。 | MIT | 仅标头;cmake |
Universal Numbers | 一个 C++17/20 模板库,提供本地算术类型(整数/十进制/定点/浮点/Posit/对数/区间)的插件式替代品 | 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 实现了通用的数据结构和算法,专注于组合优化、图和网络。(文档) | 许可证 | |
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 | 易于使用的科学计算库,适用于 Linux 和 Windows 平台。 | MIT | cmake |
NumCpp | 一个实现 Python NumPy 的 C++ 模板库 | MIT | 仅头文件;cmake, vcpkg, conan |
PETSc | 一套数据结构和例程,用于并行求解偏微分方程建模的科学应用。 它通过 CUDA 或 OpenCL 支持 MPI 和 GPU,以及混合 MPI-GPU。 | ||
Spectra | Sparse Eigenvalue Computation Toolkit as a Redesigned ARPACK 是一个开源 C++ 库,用于大规模特征值问题,构建于 Eigen 线性代数库之上(也是开源且仅包含头文件)。(源码) | MPL-2.0 | 仅头文件;cmake, vcpkg |
Tense | 一个快速的 C++17 表达式模板矩阵和张量库 | BSD-3-Clause | 仅标头;cmake |
xtensor | 一个 C++ 库,旨在用于多维数组表达式的数值分析。 | BSD |
- 机器学习
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
Dlib | 一个机器学习工具 | ||
FANN | 一个快速人工神经网络库 | ||
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 |
[编辑] 元编程
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
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 | 一个用于构建表达式模板支持的 EDSL 的库 | 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 行。 |
[编辑] PDF
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
HARU | 一个免费的、跨平台的、开源的库,用于生成 PDF 文件。(文档) (源码) | Zlib | cmake |
JagPDF | 一个免费的开源库,用于生成 PDF (文档) | MIT | |
PoDoFo | 一个免费的、可移植的 C++17 库,用于处理 PDF | LGPL-2.0 | cmake, conan, vcpkg |
PDF-Writer | 一个高性能 C++ 库,用于创建、修改和解析 PDF 文件 | Apache-2.0 | cmake, conan, vcpkg |
[编辑] 物理和模拟
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
Bullet | 一个用于游戏、视觉效果、机器人和强化学习的物理模拟引擎 | ||
HELICS | 一个协同仿真框架,用于同步不同类型模拟器之间的时间和交换数据 | BSD 3-Clause "New" 或 "Revised" | cmake |
ProjectCHRONO | 一个开源多物理场仿真引擎 | ||
ReactPhysics3D | 一个 C++ 物理引擎库,用于 3D 模拟和游戏 |
[编辑] 机器人技术
- 感知
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
GTSAM | 传感器融合、SLAM、SFM、VO、计算机视觉(源码) | BSD | cmake |
opencv | 计算机视觉和感知、校准、特征匹配(源码) (文档) | BSD, Apache 2 | cmake |
[编辑] 序列化
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
Boost.Serialization | BSL-1.0 | ||
C++ XML 对象 | |||
cereal | 一个 C++11 序列化库 | BSD | |
cista | 一个简单、高性能、零拷贝的 C++ 序列化和反射库。(源码) | MIT | cmake |
cppcodec | 一个 C++11 库,用于使用一致、灵活的 API 编码/解码 base64、base32 和十六进制 | 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 文件编译器。(文档) | 自定义 | bazel, cmake |
rpnx-serial | 一个可以(反)序列化类型如 std::map, std::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 | 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++ 库,用于提取系统和硬件信息,无需访问命令行。 | 知识共享许可协议 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 | 著名的 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 测试和模拟框架。(源码) | BSD 3-Clause "New" 或 "Revised" | 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 |
[编辑] 文本
- 编码
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
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_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 | 一组 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, etc. |
Jinja2C++ | Jinja2 模板的 C++14/17 实现 | MPL-2.0 | cmake, conan |
[编辑] 版本控制
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
coo-semver | 一个用于语义版本号的 C++ 操作库。 | ||
LibGit2 | 版本控制系统 Git 的核心库。 |
[编辑] 视频
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
crystalhd | |||
gstreamermm | |||
libmatroska | |||
libVLC | |||
mjpegtools | |||
OpenH264 | 一个多平台、多架构、开源库,支持 H.264 编码和解码(源码) | BSD-2 条款 | meson |
[编辑] Web
库 | 描述 | 许可证 | 配置 |
---|---|---|---|
Chromium Embedded | |||
cpp-jwt | |||
Drogon | 一个基于 C++14/17 的 HTTP Web 应用程序框架,可在 Linux/macOS/Unix/Windows 上运行。 | ||
ffead-cpp | 一个framework for Enterprise Application Development in C++ 框架,兼容 HTTP1/HTTP2/HTTP3,支持多个服务器后端 | Apache 2.0 | cmake |
libhttpserver | 一个 C++ 库,用于构建高性能 RESTful Web 服务器。构建于 libmicrohttpd 之上,为开发者提供一个简单的 API 以在 C++ 中创建 HTTP 服务。 |
LGPL-v2.1 | autotools |
libkcddb | |||
liblastfm | |||
libmusicbrainz5 | |||
libnavajo | |||
Molybden | 一个用于构建跨平台 C++ 桌面应用程序的 SDK,带有 HTML/CSS/JS GUI。 (文档) (源码) | 许可证 | npm |
oatpp | 一个强大、便携、轻量级且零依赖的 Web 框架,用于 IoT 和高性能 Web 服务。 | ||
QtWebApp | 受 Java Servlet 启发的 C++ HTTP(s) 服务器 | ||
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 应用程序的 Widgets 和构建模块,内置安全性、PDF 渲染、2D 和 3D 绘图、ORM、图表绘制、身份验证框架。 (文档) (源码) | GNU GPL 或商业 |
[编辑] 另请参阅
C 文档 for Non-ANSI/ISO 库
|
[编辑] 外部链接
1. | C++ 单元测试框架列表 — 位于维基百科 |
2. | 精选的(超棒的)仅头文件 C++ 库列表 — 位于 GitHub |
3. | 精选的(超棒的)C++ 和 C 库列表 — 位于 GitHub |
4. | Boost C++ 库 — 位于 Boost.org |
5. | 庞大的 C++ 开源游戏和框架列表 — 位于 GitHub.io |