開源 C++ 庫列表
來自 cppreference.com
本頁旨在建立一個全面的開源 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 | 一個為遊戲需求設計的跨平臺音訊引擎。(原始碼) | Apache-2.0 | cmake, vcpkg |
Aquila | 一個用於 C++11 的開源跨平臺 DSP 庫。 | MIT | cmake |
Aubio | 一個用於音訊和音樂分析的 C/Python 庫。(原始碼) | GPL-3.0 | make |
audioFlux | 一個用於音訊和音樂分析、特徵提取的 C 庫。 | MIT | |
Essentia | 一個用於音訊和音樂分析、描述和合成 (MIR) 的開源庫和工具。(原始碼) | Affero GPLv3 | |
FFTW | 一個用於計算 DFT 的庫 (SSE/SSE2/AVX/Altivec/ARM Neon)。(原始碼) | GPL-2.0 | cmake |
FMOD | 一個易於使用的跨平臺音訊引擎和遊戲音訊內容創作工具。 | 免費用於非商業/商業用途 | cmake |
KFR | 一個快速、現代、C++17、開源、跨平臺 DSP/DFT 框架,支援音訊重取樣、FIR/IIR 濾波器、Biquad (SSE, AVX, AVX-512, ARM NEON)。(原始碼) | GPL-2.0 | cmake |
libsoundio | 一個用於跨平臺即時音訊輸入和輸出的 C 庫。(原始碼) | MIT | cmake |
Maximilian | C++ 音訊和音樂 DSP 庫。 | MIT | cmake |
Miniaudio | 一個音訊播放和捕獲 C 庫。(原始碼) | Unlicense | 單一原始檔 |
ni-media | 用於讀寫音訊檔案的 C++ 庫。 | MIT | cmake, vcpkg |
OpenAL | 一個跨平臺音訊 API。 | BSD/LGPL/專有 | cmake |
PortAudio | PortAudio 是一個免費、跨平臺、開源的音訊 I/O 庫。(原始碼) | MIT | cmake, vcpkg |
rnnoise | 用於音訊降噪的迴圈神經網路。 | BSD-3-Clause | make |
SELA | SimplE Lossless Audio(簡單無損音訊)。 | MIT | cmake |
SoLoud | 易用、便攜的遊戲音訊引擎。 | zlib | |
Soundtouch | SoundTouch 是一個開源跨平臺音訊處理庫,用於改變音訊流或音訊檔案的速度、音調和播放速率。(原始碼) | LGPL-2.1 | make |
Tonic | C++ 中簡單高效的音訊合成。 | Unlicense | |
Verovio | 一個快速輕量級的樂譜雕刻庫。(原始碼) | LGPL | cmake, qmake |
Wav2Letter++ | 一個完全用 C++ 編寫的快速語音識別工具包,使用 ArrayFire 張量庫和 flashlight 機器學習庫以實現最大效率。 | Unlicense | cmake |
- CD
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
libkcompactdisc | 一個用於與 CD 互動的庫 | GPL v2.0 | cmake |
- 指紋識別
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
chromaprint | Chromaprint 是一個音訊指紋庫,旨在識別幾乎相同的音訊。它以精度和魯棒性換取搜尋效能。Chromaprint 可以使用多種 FFT 庫 - FFmpeg、FFTW3、KissFFT 或 vDSP。(原始碼) | MIT, LGPL 2.1 | cmake |
libmusicbrainz | MusicBrainz 客戶端庫 (libmusicbrainz),也稱為 mb_client,是一個面向希望將 MusicBrainz 查詢功能新增到其應用程式的開發人員的開發庫。該庫支援 Windows、Linux 和 Mac OS X。(原始碼) | LGPL-2.1 | cmake |
libofa | MusicIP 的開源音訊指紋。 | APL | make |
- 格式
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
AudioFile | 一個用於讀寫音訊檔案的簡單 C++ 庫。 | MIT | cmake |
audio_file | 一個處理多種常見格式音訊檔案讀寫的庫。(原始碼) | 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)。(原始碼) | LGPL-2.1 | cmake, make, vcpkg |
minimp3 | 極簡 MP3 解碼器 | CC0-1.0 | 僅標頭檔案 |
Opus | 一個完全開放、免版稅、高度通用的音訊編解碼器。 | BSD | cmake |
Vorbis | Ogg Vorbis 是一種完全開放、非專有、無專利和免版稅的通用壓縮音訊格式。 | BSD | cmake |
- 標籤
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
id3lib | 一個用於讀取、寫入和操作 ID3v1 和 ID3v2 標籤,並檢索一些基本 MP3 頭資訊(如位元率)的開源跨平臺庫。但是,我們現在建議改用 taglib :) | LGPL v2 | |
taglib | TagLib 音訊元資料庫是一個用於讀取和編輯幾種流行音訊格式元資料的庫:MP3 檔案的 ID3v1、ID3v2,Ogg Vorbis 註釋以及 FLAC、MPC、Speex、WavPack、TrueAudio、WAV、AIFF、MP4 和 ASF 檔案中的 ID3 標籤和 Vorbis 註釋。(原始碼) | LGPL 和 MPL v1.1 |
[編輯] 效能測試
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
benchmark | 一個用於對程式碼片段進行效能測試的庫,類似於單元測試 | Apache 2.0 | cmake |
Celero | 一個功能豐富的 C++ 效能測試編寫庫/框架。支援 Windows、Linux 和 OSX,使用 C++11。 | Apache | cmake |
Criterion | 一個用於現代 C++ 的微效能測試庫 | MIT | 僅標頭檔案;cmake |
gperftools | “Google Performance Tools”包含一個高效能、多執行緒的 malloc 實現,以及用於測試堆分配和 CPU 利用率的工具。 | BSD 3-Clause "New" or "Revised" | configure |
nanobench | 一個簡單、快速、準確的單標頭檔案微效能測試功能,適用於 C++11/14/17/20。(原始碼) | MIT | 僅標頭檔案;cmake |
picobench | 一個微型(超微型)效能測試庫 | MIT | 僅標頭檔案;cmake |
plf::nanotimer | 一個最低開銷、跨平臺的簡單計時器類,用於效能測試。 | zlib | 僅標頭檔案 |
[編輯] 通訊
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
ACE | 非同步網路、事件多路分解、訊息傳遞 (原始碼) (文件) | 自定義 | make |
Apache Thrift | Apache Thrift 軟體框架用於可擴充套件的跨語言服務開發,它結合了軟體棧和程式碼生成引擎,以構建在 C++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Cocoa、JavaScript、Node.js、Smalltalk、OCaml 和 Delphi 等語言之間高效無縫工作的服務。(原始碼) | Apache-2.0 | cmake, vcpkg |
Boost.Asio | 非同步和同步網路、計時器、序列 I/O | BSL-1.0 | |
Boost.Beast | 一個基於 Boost.Asio 構建的 HTTP 和 WebSocket 庫 | BSL-1.0 | |
Breep | 一個基於事件、高階的對等庫,允許使用者直接傳送和接收物件。 | 歐洲公共許可證 1.1 | cmake |
brpc | 一個百度內部使用的工業級 RPC 框架,擁有 1,000,000 多個例項和數千種服務。(原始碼) (文件) | 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++ 包裝器。(原始碼) | 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。高效能全非同步 RPC 服務框架。同時支援 HTTP、WebSocket、TCP 和可靠 UDP。支援開發超高負載伺服器,並提供相應的客戶端 SDK。 | 未知 | make |
gRPC | 一個現代開源高效能 RPC 框架,可在任何環境中執行。(原始碼) (文件) | Apache-2.0 | bazel, cmake, vcpkg |
gsoap | 一個 C/C++ 開發工具包,用於 XML 資料繫結、快速 WSDL/SOAP/XML Web 服務、WS-Security、JSON/XML-RPC RESTful 服務 | GPLv2 | |
hmbdc | 一個輕量級高效能 C++17 訊息釋出/訂閱中介軟體框架/庫 | 僅標頭檔案 | |
HTTPP | 一個簡單、C++14、生產就緒的 HTTP 伺服器(基於 Boost 構建)和一個客戶端(基於 libcurl 構建)。 | BSD 2-Clause "Simplified" | cmake, make |
IXWebSocket | 一個無依賴的開源 WebSocket + HTTP 庫,支援 SSL 和每訊息解壓縮 WebSocket 擴充套件。 | BSD 3-Clause "New" or "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 身份驗證、壓縮、Cookie 和高階會話管理、IPv4 和 IPv6 (CeCILL-C)。 | CeCILL-C 免費軟體許可協議 | cmake |
libtins | 一個網路資料包建立和嗅探庫 (原始碼) (文件) | BSD-2 | cmake, vcpkg |
LiteNetLibPP | 一個用於遊戲的輕量級可靠 UDP 庫 | MIT | cmake |
mailio | MIME 和電子郵件庫 | BSD 2-Clause "Simplified" | cmake |
nanomsg | 一個快速訊息佇列,zeromq 的繼任者 | ||
netif | 一個用於在 Windows、Linux、macOS 和 FreeBSD 上獲取網路地址的 C++14 庫。 | BSD 3-Clause "New" or "Revised" | 僅標頭檔案;cmake |
nghttp2 | HTTP/2 C 庫和工具(伺服器、客戶端、代理和效能測試工具) | MIT | cmake, configure |
ngrest | 一個快速易用的 JSON RESTful Web 服務框架 | Apache 2.0 | cmake |
nng | 一個快速訊息佇列,nanomsg 的繼任者 | ||
Oat++ | 一個 Web 框架:REST-API 和請求實現 (原始碼) (文件) | 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++ 包裝器。(原始碼) | Unlicense | conan, homebrew, cmake, vcpkg |
POCO | 網路:加密、HTTP;Zip 檔案 (文件) | ||
rest_rpc | 一個 C++11、高效能、跨平臺、易用的 RPC 框架。 | MIT | cmake |
restbed | 一個跨平臺功能豐富的框架,為 C++14 應用程式帶來非同步 RESTful 功能(透過 HTTP 進行安全通訊)。 | 許可證 | cmake |
restc-cpp | 從 C++ 訪問 JSON API。HTTP 客戶端,原生 C++ 類到/從 JSON 序列化,透過 boost::asio 協程進行非同步 IO。C++14。 | MIT | cmake |
restful_mapper | 用於在 C++ 中消費 RESTful JSON API 的 ORM | cmake, make | |
seastar | 一個基於 C++14/C++17 的高效能伺服器端應用框架。 | Apache 2.0 | cmake, etc. |
Silicon | Silicon C++14 Web 框架:快速健壯的 Web API | MIT | cmake |
sockpp | 一個簡單、現代的 C++ socket 庫 | BSD 3-Clause "New" or "Revised" | cmake |
stream-client | 一個基於 Boost 的輕量級客戶端 socket/聯結器/socket 池/解析器 | 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 | 提供一個 SYCL 和 C++ 並行 STL 解除安裝編譯器和執行時系統,適用於 NVIDIA、AMD、Intel 的 CPU 和 GPU | 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。(文件) | Apache-2.0 | cmake |
HPX | 一個用於任意規模並行和分散式應用程式的通用 C++ 執行時系統(文件) | BSL-1.0 | cmake, vcpkg |
Intel TBB | Intel® TBB 是一個用於共享記憶體並行程式設計和異構計算的跨平臺 C++ 庫。該庫提供:通用並行演算法、併發容器、可擴充套件記憶體分配器、工作竊取任務排程器和低階同步原語。(原始碼)(文件) | Apache-2.0 或 Commercial | 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" or "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 | 一個小型跨平臺框架,透過使用 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 後端的線性代數和演算法。(原始碼)(文件) | 自定義 | 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++ 介面,包括型別安全的 Callback 和一套全面的可繼承擴充套件的 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 | Puppet 開發的 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++ 繫結和型別檢查,允許直接解析到使用者資料結構,無需庫分配、支援 push/pull 模式、分配器支援、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 的 C++11 JSON 庫,具有直觀的語法。 | MIT | 僅標頭檔案;bazel, cmake, meson |
Jsonifier | 一些 C++20 類,用於極快的 JSON 解析/序列化。 | MIT | cmake |
JSON Voorhees | C++11 的殺手級 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++ 結構體並從中對映。 | 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++ 分配器 | 用於固定大小靜態和基於棧記憶體的 STL 一致分配器 + 另一個允許自定義邊界分配的一致分配器 | BSD-3-Clause | cmake, make |
cpp-btree | B-樹容器更好地利用 CPU 快取:btree_map 、btree_set 、btree_multimap 、btree_multiset 。(原始碼) |
Apache-2.0 | 僅標頭檔案;cmake |
DataFrame | 用於統計、金融和機器學習分析的 C++ DataFrame —— 採用現代 C++,使用原生型別和連續記憶體儲存。 | BSD-3-Clause | cmake, make, conan, vcpkg |
eggs::variant | Eggs.Variant 是一個 C++11/14/17 通用、型別安全、判別式 union。它尤其以其出色的 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 | “交換並彈出”/“移動並彈出”慣用語的擴充套件和最佳化,用於隨機訪問容器,以提高隨機訪問容器的擦除效能,當擦除後的順序不重要時。涵蓋單個、範圍和 std::erase_if 風格的擦除。相容 C++98/11/14/等。(原始碼) |
zlib | |
plf::queue | 一個可替代 std::queue 容器介面卡的容器,在佇列上下文中效能優於 std::deque 和 std::list。相容 C++98/11/14/等。(原始碼) | zlib | |
plf::stack | 一個可替代 std::stack 容器介面卡的容器,在棧上下文中效能優於 std::vector 和 std::deque。相容 C++98/11/14/等。(原始碼) | 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 | 一個加密工具包。(原始碼) | BSD 2-Clause "Simplified" | make |
crypto++ | 一個免費的 C++ 加密方案類庫。(原始碼) | Boost | make |
gnutls | 一個安全通訊庫,實現了 SSL、TLS 和 DTLS 協議及其相關技術。(原始碼) | LGPL-2.1 | make |
openssl | 一個健壯、商業級、功能齊全的通用加密和安全通訊工具包。(原始碼) | Apache-2.0 | make |
TomCrypt | 一個相當全面、模組化和可移植的加密工具包,為開發者提供了大量知名的分組密碼、單向雜湊函式、連結模式、偽隨機數生成器、公鑰加密和許多其他例程。(原始碼) | 公共領域 | cmake, make |
[編輯] 資料庫
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
Boost::MySQL | MySQL 客戶端庫 | BSL-1.0 | |
cpp-redis | C++11 輕量級 Redis 客戶端:非同步、執行緒安全、無依賴、管道、多平臺。(文件) | MIT | cmake |
DTL | 使 ODBC 記錄集看起來像一個 STL 容器(原始碼)(文件) | ||
EasyQtSql | 一個輕量級的 C++11 (基於 Qt) 庫,用於快速簡便的 SQL 查詢 | MIT | 僅標頭檔案;qmake |
Galera | Galera Cluster 是同步多主複製庫 (Galera) 和用於 MySQL/MariaDB 的寫入集複製 (WSREP) API。(原始碼) | GPLv2 | cmake, scons |
LevelDB | 由 Google 開發的 C++ 庫,用於處理十億級鍵值資料的持久化儲存。(文件) | BSD-3 | cmake |
libpqxx | PostgreSQL 的 C++ 聯結器(原始碼) | BSD-3 | cmake, make |
lmdb++ | LMDB 嵌入式 B+ 樹資料庫庫的 C++11 包裝器。 | Unlicense | make |
mongocxx | MongoDB 的官方 C++11 驅動庫(文件)。它提供用於 CRUD 操作、索引和聚合的最佳化 API。支援 BSON,並具有連線池和身份驗證機制,為利用 MongoDB 構建 C++ 應用程式提供高效能和可擴充套件的解決方案。 | Apache 2.0 | cmake |
mysql++ | MySQL 資料庫和工具 | ||
nanodbc | 一個小型、跨平臺、C++14 的原生 C ODBC API 包裝器 | MIT | cmake |
ODB | 一個用於 C++ 的開源、跨平臺、跨資料庫物件關係對映 (ORM) 系統。ODB 支援 MySQL、SQLite、PostgreSQL、Oracle 和 Microsoft SQL Server 關係資料庫以及 C++98/03 和 C++11 語言標準。 | GPL2 和/或 NCUEL | |
OTL | 一個基於 C++ 模板的資料庫庫,用於 Oracle DB、ODBC 和 DB2-CLI。(原始碼) | ||
Pgfe | 現代 C++ 中的 PostgreSQL 客戶端 (FrontEnd) API | Zlib | 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、管道、事務、pubsub、連線池和類 STL 介面 | Apache-2.0 | cmake |
SOCI | 一個基於外掛的資料庫庫,將 SQL 查詢嵌入到常規 C++ 程式碼中;支援的後端包括:DB2、Firebird、MySQL、ODBC(通用後端)、Oracle、PostgreSQL、SQLite3。(原始碼)(文件) | Boost | cmake |
SQLAPI++ | 一箇中間件 C++ 資料庫庫,支援多種 SQL 資料庫系統:Oracle、SQL Server、DB2、Sybase、MySQL、PostgreSQL、SQLite、Informix、InterBase / Firebird、SQLBase、SQL Anywhere、ODBC、MariaDB。(原始碼)(文件) | 自定義 | make |
SQLiteCPP | 一個精簡易用的 C++ SQLite3 包裝器。 | MIT | cmake, meson, vcpkg |
SQLite ORM | 一個用於現代 C++ 的 SQLite 嵌入式領域特定語言 (EDSL)。 | AGPL-3.0, MIT | 僅標頭檔案;cmake, vcpkg |
sqlpp11 | 一個用於 C++ 中 SQL 查詢和結果的型別安全嵌入式領域特定語言。 | BSD-2 | cmake |
taoPQ | 一個輕量級的 C++17 PostgreSQL 客戶端庫 | Boost | cmake |
[編輯] 嵌入式語言繫結
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
AngelScript | 一種類似 C++ 的指令碼語言。 | ZLib | |
ChaiScript | 一個易於使用的 C++ 嵌入式指令碼語言。 | BSD-3-Clause | |
cling | 一個互動式 C++ 直譯器,基於 Clang 和 LLVM 構建,利用 RAD、建立指令碼、嵌入式指令碼和執行時程式碼生成。(原始碼) | 自定義 / LGPL | cmake |
ExprTk | 一個易於使用、易於整合且極其高效的執行時數學表示式解析器和評估引擎。ExprTk 支援多種形式的函式、邏輯和向量處理語義,並且非常容易擴充套件。 | ||
Jinx | 一種專為影片遊戲設計的指令碼語言。 | MIT | cmake |
spidermonkey.dev | Mozilla 的 JavaScript 和 WebAssembly 引擎。 | ||
muparser | 一個用 C++ 編寫的可擴充套件高效能數學表示式解析器庫。 | BSD-2-Clause | cmake |
PythonQt | Qt 框架的動態 Python 繫結。它提供了一種將 Python 指令碼語言輕鬆嵌入 C++ Qt 應用程式的方法。 | LGPL 2.1 | |
lua | 一種輕量級多正規化指令碼語言,主要用於嵌入式用途。C 庫。 | MIT | make |
sol2 | 一個現代 C++ Lua 繫結庫。 | MIT | 僅標頭檔案;cmake |
v8pp | 將 C++ 函式和類繫結到 V8 JavaScript 引擎。 | BSL-1.0 | 僅標頭檔案;cmake |
[編輯] 嵌入式/即時
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
distortos | 一個用於微控制器(ARM、STM32)的面向物件 C++11 RTOS(原始碼)(文件) | MPL-2.0 | cmake |
ETL | 嵌入式模板庫 - C++03,專為低資源(嵌入式)平臺量身定製的行動式模板庫(原始碼) | MIT | |
QP/C++ | RTOS 核心:基於活躍物件和狀態機的即時嵌入式框架 | GPLv3 | |
µcuREST | 用於微控制器的 C++11 REST/JSON 伺服器框架 |
[編輯] 檔案元資料
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
exempi | |||
exiv2 | |||
libkexiv2 | |||
rarian |
[編輯] 金融計算
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
DataFrame | 一個用於統計、金融和機器學習分析的 C++ DataFrame——使用原生型別和連續記憶體儲存的現代 C++。 | 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 | 簡單直觀的媒體層:一個跨平臺(Windows、macOS、Linux、iOS、Android 和其他)庫,透過平臺圖形 API(OpenGL/Direct3D/Metal/Vulkan)提供對音訊、鍵盤、滑鼠、遊戲杆和圖形硬體的低階訪問。(文件)(原始碼) | zlib | cmake |
SFML | 簡單快速多媒體庫;多平臺(Windows、Linux、macOS,很快支援 Android 和 iOS);提供一個簡單的介面,以簡化遊戲和多媒體應用程式的開發。它由五個模組組成:系統、視窗、圖形(基於 OpenGL)、音訊和網路。 | zlib/png | cmake |
SIGIL | 聲音、輸入和圖形整合庫;一個簡單、跨平臺、極簡的文字、形狀、輸入、音訊和 2D 影像庫。支援的平臺:Windows、Linux 和 Raspberry Pi | 許可證 | cmake |
[編輯] 通用
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
Abseil | Google 的 C++ 庫開源集合,旨在增強 C++ 標準庫。(文件)(原始碼) | Apache-2.0 | cmake |
抽象侵入式容器 | 比 Boost.Intrusive 更靈活,但不相容 STL。 | ||
Au | 一個 C++14 相容的物理單位庫,無依賴項,強調安全性、可訪問性和效能。(文件) | Apache 2.0 | 僅標頭檔案 |
BDE | Bloomberg L.P. 的 Bloomberg 開發環境核心庫 | Apache | |
更好的列舉 | 具有 constexpr 支援的反射列舉(列舉到字串、迭代等)。 | BSD-2 | 僅標頭檔案,cmake, make |
bitfield.h | 位域結構工具,比基本語言工具更便攜/靈活。 | ||
Boost | 一個大型的通用庫集合 | BSL-1.0 | |
CAF | C++ Actor Framework (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 的 C++ 工具包 (fcppt) 是一個庫集合,專注於透過提供更好的型別和利用函數語言程式設計來改進通用 C++ 程式碼。 | ||
Folly | Facebook 開源庫。一個跨平臺 C++14 元件庫,設計時考慮了實用性和效率。(文件) | Apache-2.0 | cmake, vcpkg |
GSL | C++ 核心指南支援庫實現,由 Bjarne Stroustrup、Herb Sutter 等人在C++ 核心指南中推薦 | MIT | cmake, vcpkg |
gsl-lite | ISO C++ 指南支援庫 (GSL) 的一個版本,適用於 C++98、C++11 及更高版本 | MIT | 僅標頭檔案 |
GUL14 | 來自 DESY 的 C++14 通用實用程式庫:常用實用程式函式和型別,包括字串實用程式、統計和數值函式、容器、除錯工具等。(原始碼) | 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" or "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 庫型別(如 std::span、std::expected 等)的 C++98/11 實現)。 | 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 客戶端。(文件)(原始碼) | BSD 2-clause | scons |
[編輯] 圖形使用者介面
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
Brisk | 跨平臺 C++20 模組化 GUI 框架,具有響應式功能和可擴充套件的 GPU 加速渲染。(原始碼),(文件) | 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 程式設計。(原始碼),(文件) | BSL-1.0 | cmake, vcpkg |
nanogui | 一個用於 OpenGL 3.x 或更高版本的極簡跨平臺小部件庫(文件) | ||
OWLNext | 用於在 Windows 上以標準 C++ 編寫 GUI 應用程式的 OWL 的現代更新 | ||
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++ 的第三方軟體包集合,如 `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++ 包裝器,cairo 是一個支援多種輸出裝置的 2D 庫:X Window、Quartz、Win32、影像緩衝區、PostScript、PDF、SVG、OpenGL(實驗性)。 | LGPL | |
dfpsr | 一個 2D、3D 和等距軟體渲染器,帶桌面 GUI 工具包,極簡依賴,專為長期維護而設計,可在沒有任何 3D 加速驅動程式的情況下執行。 | zlib | |
gegl | 通用圖形庫 (GEGL) 是一個基於資料流的影像處理框架,提供浮點處理和無損影像處理功能。(原始碼) | LGPL | |
io2d | P0267 的參考實現,建議的 ISO C++ 2D 圖形 API | BSL-1.0 | cmake |
nanovg | 一個基於 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 Library 是一個用 C++ 編寫的 Win32 微型 2D 圖形庫。 | ||
ULIS | 一個用於通用數字影像處理、2D 軟體光柵化、無限影像格式(`u8`、`u16`、`u32`、float、double)、自定義位序記憶體佈局、所有 Photoshop 畫素混合模式 + 11 種額外模式、顏色模型(RGB、HSL、HSV、CMYK 等)、顏色管理管道、色彩空間支援(icm 配置檔案和裝置無關)、多執行緒最佳化演算法、SIMD 擴充套件(SSE2)最佳化演算法、影像池和快取最佳化、動畫影像序列記憶體儲存的跨平臺 C++14 庫。 | 自定義(僅限非商業用途免費) | 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 數學庫 (GLM) 是一個基於 GLSL 規範的圖形軟體 C++ 數學庫。 | The Happy Bunny / MIT |
僅標頭檔案;cmake, vcpkg |
Godot | 一個功能齊全的 C++17 跨平臺 2D 和 3D 遊戲引擎,帶有一個用自身編寫的 GUI 編輯器和一個受 Python 啟發的指令碼語言。 | MIT | scons |
hlsl++ | 一個使用 HLSL 語法進行渲染的 C++ 數學庫。支援 SSE 和 NEON | MIT | 僅標頭檔案 |
Horde3D | 一個小型開源 3D 渲染引擎。其編寫旨在建立一個圖形引擎,提供下一代遊戲所期望的令人驚歎的視覺效果,同時保持輕量和儘可能乾淨。 | EPL | |
Irrlicht | Irrlicht 引擎是一個用 C++ 編寫的開源即時 3D 引擎。它是跨平臺的,使用 D3D、OpenGL 和其自己的軟體渲染器。 | zlib/libpng | make, vcpkg |
klein | 一個 C++11/14/17 SSE 最佳化的圖形和動畫投影幾何代數庫 | MIT | cmake, vcpkg |
Magnum | 一個輕量級模組化的 C++11/C++14 圖形中介軟體,用於遊戲和資料視覺化(原始碼) | 自定義 | cmake |
O3DE | Open-source 3D Engine(前身為 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 | 視覺化工具包 (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 | 抗鋸齒進化。一個用於 C++ 中速度和質量的 2D 圖形引擎 | MIT | cmake |
FreeImage | 一個開源庫專案,供希望支援流行圖形影像格式(如 PNG、BMP、JPEG、TIFF 等)的開發人員使用。 | GPLv2, GPLv3, FIPL | |
FreeImageRe | 一個來自開源庫 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 | Unicode 國際元件是一套成熟、廣泛使用的 C/C++ 庫,為軟體應用程式提供 Unicode 和全球化支援。(原始碼) | icu4c/LICENSE | make |
spirit-po | 一個小型庫,它解析 po 檔案並提供類似於 GNU libintl 的介面。基於 boost::spirit。 | BSL-1.0 | 僅標頭檔案 |
uni-algo | C/C++ 的 Unicode 演算法實現 | MIT/Unlicense | cmake, conan, vcpkg |
[編輯] 日誌
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
Backward | 列印漂亮的 Python 風格堆疊跟蹤,帶顏色和原始碼片段,尤其是在崩潰時。 | MIT | 僅標頭檔案;cmake,conan |
Boost.Log | 一個易於使用、可擴充套件且高效能的跨平臺日誌庫。 | BSL-1.0 | |
clutchlog | 單標頭檔案日誌系統,目標是多功能除錯而不是服務事件儲存。 | BSD | cmake |
glog | 基於 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。(原始碼) | Apache | cmake |
lwlog | 一個極其快速的同步和非同步 C++17 日誌庫 | MIT | cmake |
Pantheios | 一個診斷日誌 API 庫,提供型別安全、效率、泛型和可擴充套件性的組合 | BSD 風格 | |
plog | 一個不到 1000 行程式碼的 C++ 可移植簡單日誌庫 | 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 大數 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 | 組合數字庫 - 定精度數字型別 | BSL-1.0 | cmake, conan |
fpm | 一個 C++11 定點數學庫,提供標準庫的浮點功能在整數上。如果您的目標平臺缺少 FPU,或者需要確定性計算,則非常有用。 | MIT | 僅標頭檔案;cmake |
Universal Numbers | 一個 C++17/20 模板庫,提供本機算術型別(整數/十進位制/定點/浮點/posits/對數/區間)的外掛替代品 | MIT | cmake, vcpkg, conan |
- 計算幾何
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
Boost.Geometry | Boost.Geometry(又名通用幾何庫,GGL)定義了概念、原語和演算法來解決幾何問題。Boost.Geometry 包含一個維度無關、座標系無關和可擴充套件的核心,基於概念、元函式和標籤排程。支援的演算法有:面積、長度、周長、質心、凸包、交集(裁剪)、內部(點在多邊形內)、距離、包絡(邊界框)、簡化、變換等。該庫支援高精度算術數字。 | 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 | 網路高效建模和最佳化庫實現了常見的專注於組合最佳化、圖和網路的資料結構和演算法。(文件) | 許可證 | |
NGraph | 一個簡單的 (網路) 相簿,用 C++ 編寫 | ||
OGDF | 開放圖演算法和資料結構框架 - 是一個 C++ 圖演算法庫,特別是用於自動圖繪製。 | GPL v2 或 v3 |
- 線性代數
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
Armadillo | 一個用於線性代數和科學計算的 C++ 模板庫,具有 OpenBLAS、Intel MKL、LAPACK、ATLAS、ARPACK、SuperLU 和 FFTW 的包裝器。適用於機器學習、模式識別、DSP、生物資訊學、統計學、金融等。 | Apache 2.0 | |
Blasw | 一個 C++11 BLAS 和 LAPACK 部分的包裝器 | BSD-3-Clause | 僅標頭檔案;cmake |
Blaze | |||
Blitz++ | 一個 C++ 模板類庫,提供高效能密集陣列和向量、隨機數生成器和小型向量。 | GPL-3.0, LGPL-3.0, 自定義 | cmake |
Boost.uBLAS | 一個 C++ 模板類庫,為密集、打包和稀疏矩陣提供 BLAS 級別 1、2、3 功能。使用表示式模板。 | BSL-1.0 | |
C++ Matrix | 高效能、精確(例如,邊緣情況)的矩陣數學庫,具有表示式模板算術運算子。 | BSD-3-Clause | cmake, make |
DecompLib | 一個 C++11 庫,用於將向量分解為一組正定加權基向量。 | MIT | 僅標頭檔案 |
Dlib - 線性代數工具 | |||
Eigen | 一個用於線性代數的 C++ 模板庫:矩陣、向量、數值求解器和相關演算法。 | MPL2 | cmake, conan |
ETL | |||
IT++ | |||
Matrix | 易於使用的科學計算庫,適用於 Linux 和 Windows 平臺。 | MIT | cmake |
NumCpp | 一個實現 Python NumPy 的 C++ 模板庫 | MIT | 僅標頭檔案;cmake、vcpkg、conan |
PETSc | 一套用於並行求解由偏微分方程建模的科學應用程式的資料結構和例程。它支援MPI,透過CUDA或OpenCL支援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 | 一個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 |
[編輯] 超程式設計
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
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 | 一個用於建立、修改和解析PDF檔案的高效能C++庫 | Apache-2.0 | cmake, conan, vcpkg |
[編輯] 物理和模擬
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
Bullet | 一個用於遊戲、視覺效果、機器人和強化學習的物理模擬引擎 | ||
HELICS | 一個用於在不同型別的模擬器之間同步時間和交換資料的協同模擬框架 | BSD 3-Clause "New" or "Revised" | cmake |
ProjectCHRONO | 一個開源多物理場模擬引擎 | ||
ReactPhysics3D | 一個用於3D模擬和遊戲的C++物理引擎庫 |
[編輯] 機器人技術
- 感知
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
GTSAM | 感測器融合、SLAM、SFM、VO、計算機視覺 ( 源 ) | BSD | cmake |
opencv | 計算機視覺和感知、校準、特徵匹配 ( 源 ) ( 文件 ) | BSD, Apache 2 | cmake |
[編輯] 序列化
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
Boost.Serialization | BSL-1.0 | ||
C++ XML objects | |||
cereal | 一個C++11序列化庫 | BSD | |
cista | 一個簡單、高效能、零複製的C++序列化和反射庫。( 源 ) | 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檔案編譯器。( 文件 ) | 自定義 | 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 | 一個使用BER/DER編碼規則的C++11高效能序列化庫。編碼佈局由ASN.1模式定義。 | ||
UBjsonCpp | 一個基於C++14的高效能UBJson讀寫庫 |
[編輯] 排序
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
Cpp-sort | 一個包含各種排序演算法的簡單包。 | MIT | |
Indiesort | 一個函式模板,允許std::sort(和其他隨機訪問排序函式)用於非隨機訪問容器。它還提高了隨機訪問容器和陣列中大物件排序的效能 | zlib | |
Timsort | 一個穩定的排序函式模板,對於反向或半排序資料,其效能優於基於快速排序的演算法,包括std::sort。 | MIT |
[編輯] 系統
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
Infoware | 一個用於獲取系統和硬體資訊的C++庫,無需透過命令列。 | Creative Commons v1.0 | cmake |
[編輯] 終端
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
cli | 一個用於現代C++中互動式命令列介面的跨平臺庫。 | BSL-1.0 | 僅標頭檔案;cmake、make、nmake、vcpkg |
cwidget | 一個基於GTK+和Qt建模的C++高階終端介面庫,但使用curses作為其顯示層 | GPL v2.0 | make |
replxx | 一個支援UTF-8、語法高亮和提示的readline和libedit替代品。 |
[編輯] 測試
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
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" or "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的字元集編碼轉換庫。Windows的iconv 實現基於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庫,用於解析和輸出生成,作為Domain Specific Embedded Languages (DSEL) 實現,使用表示式模板和模板超程式設計。Spirit庫使目標語法可以完全用C++編寫。( 源 ) ( 文件 ) | BSL-1.0 | cmake |
CTRE | 快速Compile-Time Regular Expressions,支援在編譯時或執行時進行匹配/搜尋/捕獲。 | Apache-2.0 | 僅標頭檔案,cmake,vcpkg |
lexy | 一個C++17解析器組合庫,允許您透過在方便的C++ DSL中指定解析器來編寫它,具有手寫解析器的所有靈活性和控制。支援UTF-8/16/32。( 文件 ) | BSL-1.0 | cmake |
PEGTL | Parsing Expression Grammar Template Library是一個零依賴的C++17僅標頭檔案解析器組合庫,用於根據解析表示式語法 (PEG) 建立解析器。 | Boost | 僅標頭檔案 |
- 搜尋
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
clucene | CLucene是一個跨平臺、功能齊全的開源索引和搜尋引擎/API。( 源 ) ( 文件 ) | LGPL v2.1 | cmake |
Step20 | Ukkonen的線上演算法用於構建字尾樹,Manber的演算法用於構建字尾陣列。 | MIT | 僅標頭檔案 |
xapian | 一個帶有索引功能的開源搜尋引擎 ( 源 ) ( 文件 ) | GPL v2+ | make |
- 模板引擎
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
inja | 一個C++17模板引擎。 | MIT | 僅標頭檔案;cmake、conan、vcpkg等 |
Jinja2C++ | 一個Jinja2模板的C++14/17實現 | MPL-2.0 | cmake, conan |
[編輯] 版本控制
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
coo-semver | 一個用於語義版本號的C++操作庫。 | ||
LibGit2 | 版本控制系統Git的核心庫。 |
[編輯] 影片
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
crystalhd | |||
gstreamermm | |||
libmatroska | |||
libVLC | |||
mjpegtools | |||
OpenH264 | 一個支援H.264編碼和解碼的跨平臺、多架構開源庫 ( 源 ) | BSD-2 Clause | meson |
[編輯] Web
庫 | 描述 | 許可證 | 配置 |
---|---|---|---|
Chromium Embedded | |||
cpp-jwt | |||
Drogon | 一個基於C++14/17的HTTP Web應用程式框架,運行於Linux/macOS/Unix/Windows。 | ||
ffead-cpp | 一個用於C++企業Application Development的framework,相容HTTP1/HTTP2/HTTP3,支援多種伺服器後端 | Apache 2.0 | cmake |
libhttpserver | 一個用於構建高效能RESTful Web伺服器的C++庫。基於libmicrohttpd 提供一個簡單的API,供開發人員使用C++建立HTTP服務。 |
LGPL-v2.1 | autotools |
libkcddb | |||
liblastfm | |||
libmusicbrainz5 | |||
libnavajo | |||
Molybden | 一個用於使用HTML/CSS/JS GUI構建跨平臺C++桌面應用程式的SDK。( 文件 ) ( 源 ) | 許可證 | npm |
oatpp | 一個強大、便攜、輕量級、零依賴的Web框架,適用於物聯網和高效能Web服務。 | ||
QtWebApp | 受Java Servlets啟發的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應用程式的元件和構建塊,內建安全性、PDF渲染、2D和3D繪圖、ORM、圖表、認證框架。( 文件 ) ( 源 ) | GNU GPL 或商業版 |
[編輯] 另請參閱
C 文件,關於非ANSI/ISO 庫
|
[編輯] 外部連結
1. | C++單元測試框架列表 — 維基百科 |
2. | 精選的(優秀)僅標頭檔案C++庫列表 — GitHub |
3. | 精選的(優秀)C++和C庫列表 — GitHub |
4. | Boost C++ 庫 — Boost.org |
5. | 大量C++開源遊戲和框架列表 — GitHub.io |