依赖项
TEN 框架利用了多个第三方库。有些专门用于测试,而另一些则集成到 TEN 运行平台中。以下是对这些库的描述,以及在 TEN 框架中使用它们所需的任何必要修改。
Google gn
实例 ID
操作系统 | 架构 | 实例 ID |
---|---|---|
Linux | x64 | BzX0zkfwFeUn9MaDVqm6FugmTIy-hFpgNUx43O1fN00C |
Linux | arm64 | rT_12w1Iv6ug8CJ4j0VQekA0qTDq6CwoAqGWasIKFcEC |
Win | x64 | 1QlqF0FPVt82ba5f48HxHpv5xPqOmyaThoR3TicuJ8QC |
直接从 Google GN 网页 下载。
Commit ID
操作系统 | 架构 | Commit ID |
---|---|---|
Mac | universal | 18602f6cf1168cf78302024043edc02e8bad2ffb |
从Gn仓库clone编译。
Google ninja
版本:1.12.1
直接从 Ninja 发布页面 下载。
yyjson
版本:0.10.0
这在 TEN 框架核心中用于解析和生成 JSON 数据。有关详细信息,请参阅 third_party/yyjson
。
libuv
版本:1.50.0
这是 TEN 运行时中使用的一个事件循环库。有关详细信息,请参阅 third_party/libuv
。
msgpack-c
版本:6.1.0
用于 C 的 MessagePack 库。有关详细信息,请参阅 third_party/msgpack
。
libwebsockets
版本:4.3.2
规范 libwebsockets.org 网络库。有关详细信息,请参阅 third_party/libwebsockets
。
应用以下补丁。
修复在 Windows 上链接 mbedtls
如果 CMake 版本高于 3.24,请应用以下补丁,因为 find_package
自 3.24 起支持 GLOBAL
关键字。
并删除 third_party/libwebsockets/cmake/lws_config.h.in
中的 #define USING_SHARED_MBEDTLS
。
curl
版本:8.1.2
一种使用 URL 语法传输数据的命令行工具和库,支持 DICT、FILE、FTP、FTPS、GOPHER、GOPHERS、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、MQTT、POP3、POP3S、RTMP、RTMPS、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、TELNET 和 TFTP。libcurl 提供了无数强大的功能。
有关详细信息,请参阅 third_party/curl
。
curl 的补丁
修补 lib/CMakeLists.txt
,将共享库名称从 _imp.lib
更改为 .lib
。
在 lib/ws.h
中导出 Curl_ws_done
,因为需要调用此函数以防止内存泄漏。
clingo
版本:5.8.0
一种用于逻辑程序的接地器和求解器。
有关详细信息,请参阅 third_party/clingo
。
ten_manager 实际上使用 clingo-sys crate 来调用 clingo,而 clingo-sys 包含了自己的 clingo 源代码。然而,这个包含的 clingo 源代码是 5.6.2 版本,在 cmake 4 环境中存在编译错误。因此,我们需要使用 cargo 的 patch 功能来使用最新的本地版本 clingo 源代码(已修复了 cmake 4 编译错误)。此外,由于 clingo-sys 已经包含了 clingo 源代码,我们实际上并不需要 third_party/clingo 文件夹。但是,由于 clingo-sys 在 Windows 上仍然将 clingo 编译为共享库,我们目前仍然需要使用 third_party/clingo 文件夹在 Windows 上编译 clingo 的共享库,然后使用 gn 脚本将 Windows 共享库复制到 ten_manager 的最终输出文件夹。未来,我们应该直接使用从 clingo-sys 中包含的 clingo 源代码编译的 Windows 共享库进行复制,这样就可以移除 third_party/clingo 文件夹。
FFmpeg
版本:6.0
FFmpeg 代码库主要采用 LGPL 许可,可选组件采用 GPL 许可。有关详细信息,请参阅 LICENSE 文件。
用于 ffmpeg 扩展,主要用于测试目的。有关详细信息,请参阅 third_party/ffmpeg
。
libbacktrace
版本:1.0
一个可以链接到 C/C++ 程序中以生成符号回溯的 C 库。
⚠️ 注意: 我们已经对
libbacktrace
进行了重大修改,以符合 TEN 框架的命名约定和文件夹结构。有关详细信息,请参阅core/src/ten_utils/backtrace
。
uthash
版本:2.3.0
用于哈希表等的 C 宏。
⚠️ 注意: 我们已经对
uthash
进行了重大修改,以符合 TEN 框架的命名约定和文件夹结构。有关详细信息,请参阅文件头中提到uthash
的core/include/ten_utils/container
下的文件。
uuid4
C 中的 UUID v4 生成。
⚠️ 注意: 我们已经对
uuid4
进行了重大修改,以符合 TEN 框架的命名约定和文件夹结构。有关详细信息,请参阅core/src/ten_utils/lib/sys/general/uuid.c
。
zf_log
用于 C/ObjC/C++ 的核心日志库。
⚠️ 注意: 我们已经对
zf_log
进行了重大修改,以符合 TEN 框架的命名约定和文件夹结构。有关详细信息,请参阅core/src/ten_utils/log
。