本页面的目标是构建一个全面的开源 C++ 库列表,这样当需要特定功能的实现时,就不必浪费时间在网上搜索(DuckDuckGo,Google,Bing 等)。
如果您知道一个对其他人可能有用的库,请在此处添加一个链接。除了库的源代码必须随时可供下载外,没有其他限制。
本页“按原样”提供 - 希望对您有所帮助,但不提供任何保证。可能出现过时、误导或错误的链接。如果您注意到其中之一,如果您能修复错误将不胜感激。
包管理器 |
描述 |
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++ 构建工具和包管理器。 |
库 |
描述 |
许可证 |
配置 |
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
- 指纹识别
库 |
描述 |
许可证 |
配置 |
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) |
LGPL 和 MPL 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 |
一个快速的消息队列 |
|
|
库 |
描述 |
许可证 |
配置 |
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 |
库 |
描述 |
许可证 |
配置 |
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 |
库 |
描述 |
许可证 |
配置 |
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 |
库 |
描述 |
许可证 |
配置 |
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 服务器框架,用于微控制器 |
|
|
库 |
描述 |
许可证 |
配置 |
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-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 |
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+
- Qt
- 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 |
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 软件光栅化器,无限的图像格式(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。(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 |
仅限头文件。 |
- 格式
- 绘图
库 |
描述 |
许可证 |
配置 |
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 |
库 |
描述 |
许可证 |
配置 |
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 |
库 |
描述 |
许可证 |
配置 |
Boost.LEAF |
一个轻量级的 C++11 错误处理库:单头格式,无依赖项,无动态内存分配,可以与异常处理一起使用或不使用,支持多线程。(Src) |
BSL-1.0
|
仅头文件,cmake |
库 |
描述 |
许可证 |
配置 |
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 |
仅限头文件。 |
- 自动机理论
- 数字类库
库 |
描述 |
许可证 |
配置 |
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 |
|
- 机器学习
- 数值计算
库 |
描述 |
许可证 |
配置 |
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 |
库 |
描述 |
许可证 |
配置 |
HARU |
一个免费的、跨平台的、开源的库,用于生成 PDF 文件。(Doc)(Src) |
zlib/libpng |
cmake |
JagPDF |
一个免费的、开源的库,用于生成 PDF (Doc) |
MIT |
|
PoDoFo |
一个免费的、可移植的 C++17 库,用于处理 PDF |
LGPL-2.0 |
cmake, conan, vcpkg |
- 感知
库 |
描述 |
许可证 |
配置 |
GTSAM |
传感器融合、SLAM、SFM、VO、计算机视觉 (Src) |
BSD |
cmake |
opencv |
计算机视觉和感知、校准、特征匹配 (Src) (Doc) |
BSD,Apache 2 |
cmake |
- 二进制序列化
库 |
描述 |
许可证 |
配置 |
binn |
一个二进制序列化库,旨在紧凑、快速且易于使用,它本身是同名格式的实现。 |
|
|
blobify |
一个 C++17 库,仅从结构定义推断序列化布局。 |
Boost |
仅限头文件;cmake |
bson-cxx |
一个 C++11 实现的 BSON 格式库。 |
|
scons |
fast_ber |
一个使用 BER/DER 编码规则的高性能 C++11 序列化库。编码布局由 ASN.1 模式定义。 |
|
|
UBjsonCpp |
一个基于 C++14 的高性能 UBJson 读写库 |
|
|
库 |
描述 |
许可证 |
配置 |
Infoware |
一个 C++ 库,用于获取系统和硬件信息,无需使用命令行。 |
知识共享署名 1.0 |
cmake |
库 |
描述 |
许可证 |
配置 |
cli |
一个跨平台库,用于在现代 C++ 中创建交互式命令行界面。 |
BSL-1.0
|
头文件库;cmake、make、nmake、vcpkg |
cwidget |
一个面向 C++ 的高级终端界面库,其模型基于 GTK+ 和 Qt,但使用 curses 作为其显示层 |
GPL v2.0 |
make |
replxx |
一个支持 UTF-8、语法高亮和提示的 readline 和 libedit 替代库。 |
|
|
库 |
描述 |
许可证 |
配置 |
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 |
- 编码
库 |
描述 |
许可证 |
配置 |
strsuite |
一个 C++20 库,用于管理不同编码的字符串 |
LGPL3.0 |
cmake |
uchardet |
猜测字符串编码,基本上与 Python 中的 `uchardet` 函数相同。 |
Mozilla 公共许可证 v1.1 |
cmake |
win-iconv |
一个用于 Linux 和 Mac 的字符集编码转换库。Windows 实现的 `iconv` 基于 Win32 字符集转换 API。 |
公有领域 |
cmake |
- Diff/Patch
- 格式
- 解析
库 |
描述 |
许可证 |
配置 |
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 |
仅限头文件。 |
- 搜索
- 模板引擎
库 |
描述 |
许可证 |
配置 |
inja |
一个用于 C++17 的模板引擎。 |
MIT |
仅包含头文件;cmake,conan,vcpkg 等。 |
Jinja2C++ |
Jinja2 模板的 C++14/17 实现 |
MPL-2.0 |
cmake,conan |