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 该用哪个库」往往需要大量搜索。这个列表的价值:

  1. 按领域分类导航:27 个主分类,从 AI 到 YAML,覆盖大多数开发场景
  2. 标注许可证:每个库都标注了许可证(MIT、Apache2、Boost 等),方便合规排查
  3. 标注活跃度:⚡ 标记表示项目活跃(提交频繁或最近更新)
  4. 一站式入口:不需要逐个查 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(日志)

  • spdlog ⚡ — 高性能 header-only 日志库。[MIT]
  • Boost.Log — Boost 日志设施。[Boost]

Math(数学)

  • Eigen — 线性代数、矩阵运算。[MPL2]
  • CGAL — 计算几何算法库。[GPL3 / LGPL3]
  • GMP — GNU 多精度算术库。[LGPL3]

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

坑与注意

  1. 许可证合规是重点:C++ 库许可证多样(GPL、LGPL、Boost、MIT 等),商业项目需重点关注。列表中标注了许可证,但建议在集成前仔细阅读完整 LICENSE 文件。
  2. ⚡ 标记不等于 LTS:活跃项目可能在 API 层面频繁breaking change,使用前注意版本号。
  3. header-only ≠ 零依赖:很多 header-only 库(如 nlohmann/json)仍有可选依赖(如 CMake、Python),完整功能可能需要额外库。
  4. 列表条目数量庞大:共 2000+ 条,列表本身不提供搜索功能,建议配合 GitHub 页面搜索或本地克隆后 grep 使用。
  5. 部分项目已过时:一些老库(如 APR、C++ REST SDK 旧版)维护不积极,选用前确认最近更新时间。
  6. 中文资源有限:该列表以英文为主,部分 C++ 优质中文资源(如 cppreference 中文)未收录。

与同类对比

列表 规模 侧重点 特色
awesome-cpp 2000+ C++ 全生态 覆盖面最广,分类最细
awesome-hpp 中等 Header-only C++ 库 专注单头文件库
CPP reference 标准库文档 权威参考,非导航
vcppkg list 极大 可包管理器安装的库 包管理,非人工精选
conan-center 极大 Conan 可用包 同上,更偏工程

一句话推荐结论

C++ 开发者找「做 XX 该用哪个库」,先在 awesome-cpp 对应分类下找,省去大量无效搜索时间;找到后务必核对许可证是否与项目兼容,以及库的活跃度是否足以支撑生产使用。