fffaraz/awesome-cpp · 上手攻略
- 仓库:fffaraz/awesome-cpp
- 链接:https://github.com/fffaraz/awesome-cpp
- 分类:skill(C++ 资源导航)
- 作者:Tom
- 更新:2026-07-12
这是什么
fffaraz 维护的 C++(及 C)优质框架、库、资源精选列表。灵感来自其他 awesome 项目,是 C++ 领域 Star 数最高的资源列表之一。
覆盖范围极广:从标准库参考、通用框架、AI/ML、异步网络、科学计算,到 GUI、游戏引擎、网络协议、数据库驱动,几乎囊括了现代 C++ 开发生态中所有值得关注的工具。按类别组织,条目均附 GitHub 链接和许可证标识,方便快速筛选。
解决什么问题
C++ 生态历史悠久、库极多,找「做 XX 该用哪个库」往往需要大量搜索。这个列表的价值:
- 按领域分类导航:27 个主分类,从 AI 到 YAML,覆盖大多数开发场景
- 标注许可证:每个库都标注了许可证(MIT、Apache2、Boost 等),方便合规排查
- 标注活跃度:⚡ 标记表示项目活跃(提交频繁或最近更新)
- 一站式入口:不需要逐个查 GitHub trending,列表已人工筛选过质量
核心分类与精选条目
Artificial Intelligence(AI / 机器学习)
- Dlib ⚡ — 通用 ML 工具包,人脸检测、目标检测、回归模型。[Boost]
- CNTK — Microsoft Cognitive Toolkit,深度学习框架。[MIT]
- onnxruntime — 跨平台 ML 推理引擎。[MIT]
Asynchronous Event Loop(异步事件循环)
- libuv — Node.js 底层跨平台异步 I/O 库。[MIT]
- Boost.Asio — Boost 系列异步 I/O 网络编程库。[Boost]
- libevent — 高性能事件驱动网络库。[BSD]
Audio(音频)
- minimp3 — 单文件 MP3 解码器,嵌入式友好。[CC0 / 公共领域]
- OpenAL — 跨平台 3D 音频 API。[LGPL]
- libsoup — GNOME HTTP 客户端/服务器库。[LGPL]
CLI(命令行界面)
- Boost.Program_options — 命令行参数解析。[Boost]
- cxxopts — 轻量 header-only 命令行参数解析。[MIT]
- Clap — modern C++ 命令行参数解析。[MIT]
- FTXUI — 终端 UI 库,支持组件化 UI 构建。[MIT]
Compression(压缩)
- zlib — 通用压缩库,DEFLATE 算法。[zlib]
- libarchive — 多格式存档压缩(tar/zip/rar 等)。[BSD]
- zstd — Facebook Zstandard 高压缩比算法,速度与压缩率兼优。[BSD]
Database(数据库)
- LevelDB — Google 高性能键值存储。[BSD]
- RocksDB — Facebook 嵌入式 KV 数据库,支持 LSM 树。[Apache2]
- SQLite — 嵌入式关系数据库,零配置。[公共领域]
- MySQL C++ Connector — MySQL 官方 C++ 驱动。[GPL2/FOSS Exception]
- redis-plus-plus — Redis C++ 客户端,支持 async/sync。[Apache2]
Game Engine(游戏引擎)
- Godot ⚡ — 知名开源游戏引擎,3A 级别。[MIT]
- Ogre 3D — 面向对象的 3D 渲染引擎。[MIT]
- Ursina — Python 游戏引擎(注意:这是 Python,不是 C++)
Graphics(图形)
- Vulkan SDK — 下一代 GPU API。[Apache2]
- GLFW — OpenGL 窗口和输入管理。[zlib]
- OpenGL — 跨平台图形 API。
- Skia — Google 2D 图形库(Chrome/Android 内核)。[BSD]
GUI(图形界面)
- Qt — 最成熟的跨平台 GUI 框架。[GPL3 / 商业]
- wxWidgets — 跨平台原生 GUI。[wxWindows]
- GTK — GNOME 桌面 UI 库。[LGPL]
- Dear ImGui — 即时模式 GUI,用于游戏/工具开发。[MIT]
- FLTK — 轻量跨平台 GUI。[GPL2]
JSON
- nlohmann/json ⚡ — 最流行的 header-only JSON 库。[MIT]
- rapidjson — 高性能 JSON 解析/生成。[BSD]
- simdjson — SIMD 加速 JSON 解析,速度极快。[Apache2]
Networking(网络)
- libcurl — URL 传输库,HTTP/FTP 等协议。[MIT]
- Boost.Beast — HTTP/WebSocket 库,基于 Asio。[Boost]
- uWebSockets ⚡ — 高性能 WebSocket 实现。[Zlib]
- libh2o — 高性能 HTTP 服务器/库。[MIT]
Web Application Framework(Web 框架)
- Drogon ⚡ — 高性能 C++ Web 框架,支持 async/ORM。[MIT]
- C++ REST SDK (Casablanca) — Microsoft 的跨平台 Web API 库。[MIT]
- Crow — 轻量 C++ Web 框架,类似 Flask。[BSD]
- Pistache — 纯 C++ REST 框架。[Apache2]
Logging(日志)
Math(数学)
Serialization(序列化)
- Protocol Buffers — Google 结构化数据序列化。[BSD]
- cereal — header-only C++ 序列化库。[BSD]
- FlatBuffers — 高效序列化库,避免解析开销。[Apache2]
快速安装(典型库)
# 包管理器安装(vcpkg)
vcpkg install nlohmann-json
vcpkg install spdlog
vcpkg install rapidjson
vcpkg install glfw3
vcpkg install sqlite3
# conan 安装
conan install nlohmann_json/3.10.5@
conan install spdlog/1.12.0@
# CMake + FetchContent(header-only 库示例)
include(FetchContent)
FetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz)
FetchContent_MakeAvailable(json)
target_link_libraries(myapp PRIVATE nlohmann_json::nlohmann_json)
Dear ImGui + GLFW 快速上手
# 下载 GLFW
brew install glfw
# 克隆 Dear ImGui
git clone https://github.com/ocornut/imgui.git
git clone https://github.com/ocornut/imgui_backend.git
// main.cpp(最小示例)
#include "imgui.h"
#include "imgui_impl_glfw.h"
#include "imgui_impl_opengl3.h"
#include <GLFW/glfw3.h>
int main() {
glfwInit();
GLFWwindow* window = glfwCreateWindow(1280, 720, "ImGui Demo", nullptr, nullptr);
glfwMakeContextCurrent(window);
ImGui::CreateContext();
ImGui_ImplGlfw_InitForOpenGL(window, true);
ImGui_ImplOpenGL3_Init("#version 130");
while (!glfwWindowShouldClose(window)) {
glfwPollEvents();
ImGui_ImplOpenGL3_NewFrame();
ImGui_ImplGlfw_NewFrame();
ImGui::NewFrame();
ImGui::ShowDemoWindow(); // 官方演示窗口
ImGui::Render();
glClearColor(0.45f, 0.55f, 0.60f, 1.00f);
glClear(GL_COLOR_BUFFER_BIT);
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
glfwSwapBuffers(window);
}
ImGui_ImplOpenGL3_Shutdown();
ImGui_ImplGlfw_Shutdown();
ImGui::DestroyContext();
glfwTerminate();
return 0;
}
编译运行:
g++ -std=c++17 main.cpp -o demo \
-I../imgui -I../imgui_backend \
-L/usr/local/lib -lglfw -lGL -lstdc++fs
./demo
典型适用场景
| 场景 | 推荐库 |
|---|---|
| Web 服务/API | Drogon、Crow、Pistache、C++ REST SDK |
| 嵌入式 JSON 解析 | nlohmann/json、rapidjson |
| 高性能日志 | spdlog |
| 游戏开发 | Godot、Dear ImGui(工具层)、Ogre 3D |
| 深度学习推理 | onnxruntime、Dlib |
| 网络工具/爬虫 | libcurl、Boost.Asio、uWebSockets |
| GUI 应用 | Qt、wxWidgets、Dear ImGui |
| 图像处理 | OpenCV、Skia |
| 数据库操作 | SQLite、RocksDB、redis-plus-plus |
| 压缩/存档 | zstd、zlib、libarchive |
坑与注意
- 许可证合规是重点:C++ 库许可证多样(GPL、LGPL、Boost、MIT 等),商业项目需重点关注。列表中标注了许可证,但建议在集成前仔细阅读完整 LICENSE 文件。
- ⚡ 标记不等于 LTS:活跃项目可能在 API 层面频繁breaking change,使用前注意版本号。
- header-only ≠ 零依赖:很多 header-only 库(如 nlohmann/json)仍有可选依赖(如 CMake、Python),完整功能可能需要额外库。
- 列表条目数量庞大:共 2000+ 条,列表本身不提供搜索功能,建议配合 GitHub 页面搜索或本地克隆后 grep 使用。
- 部分项目已过时:一些老库(如 APR、C++ REST SDK 旧版)维护不积极,选用前确认最近更新时间。
- 中文资源有限:该列表以英文为主,部分 C++ 优质中文资源(如 cppreference 中文)未收录。
与同类对比
| 列表 | 规模 | 侧重点 | 特色 |
|---|---|---|---|
| awesome-cpp | 2000+ | C++ 全生态 | 覆盖面最广,分类最细 |
| awesome-hpp | 中等 | Header-only C++ 库 | 专注单头文件库 |
| CPP reference | 大 | 标准库文档 | 权威参考,非导航 |
| vcppkg list | 极大 | 可包管理器安装的库 | 包管理,非人工精选 |
| conan-center | 极大 | Conan 可用包 | 同上,更偏工程 |
一句话推荐结论
C++ 开发者找「做 XX 该用哪个库」,先在 awesome-cpp 对应分类下找,省去大量无效搜索时间;找到后务必核对许可证是否与项目兼容,以及库的活跃度是否足以支撑生产使用。