Skip to content

Conversation

@mikami-w
Copy link

关联 Issue: Closes #1

修改类型

  • 新功能 (Feature)
  • Bug修复 (Fix)
  • 文档更新 (Docs)
  • 构建配置变动 (Build)

PR 详情
为了让非 C++23 环境(如 C++17 项目)也能直接使用本库,本 PR 新增了一套 Header-only 的 C++17 实现

实现方式
这一实现并非对 C 接口的封装,而是将 src/*.cppm 中的核心业务逻辑直接移植到了 C++17 标准的头文件中:

  1. 代码移植

    • module 相关语法替换为标准的 #include
    • 将 C++20 concept 约束替换为 C++17 兼容的模板写法。
    • 移除了其他对 C++17 以上标准特性的依赖。
  2. 新增文件 (位于 include/ 下):

    • include/llmapi.hpp: C++17 版本的统一入口。
    • include/llmapi/openai.hpp: 对应原 src/openai.cppm 的逻辑。
    • include/llmapi/url.hpp: 对应原 src/url.cppm 的逻辑。
  3. 构建配置

    • 更新了 xmake.lua,将新头文件加入安装/导出列表。
  4. 文档

    • 简洁地更新了三种语言的文档。

设计说明

  • 非侵入式:原有的 src/*.cppm (C++23 Modules) 和 src/c/ (C ABI) 代码完全未作修改
  • 独立性:C++17 版本是独立的 Header-only 库,用户在使用时只需引用 include/llmapi.hpp 并链接 libcurlnlohmann/json 即可,不需要编译原来的 C++23 模块库。

测试
已在本地 C++17 环境下测试通过,功能与 C++23 Modules 版本实现保持一致。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature Request] 建议增加 C++17 Header-only 原生支持以提升项目兼容性

1 participant