|
Aria 3.2.6
C++23 MVVM framework — reactive, coroutine-first, ABI-layered
|
先安装统一依赖工具:python -m pip install -r requirements-build.txt。离线解析与源码获取也需要已安装的 Python 和 ForgeDeps。
本文的命令均从 **Aria 仓库根目录**执行。需要 Python 3.14+ 和已安装的 ForgeDeps;macOS/Linux 如果没有 python 命令,替换为 python3。首次解析或主动更新需要联网;GitHub API 可使用已登录的 gh,未安装时使用公开 API。构建还需要 README 所列的编译器、CMake 和平台 SDK。
根目录 dependencies.json 同时保存版本要求和已解析结果,不再有单独的 dependencies.lock.json。每项的来源字段只记录一次:
提交这一份文件即可让其他开发者和 CI 使用同一选择。不要手改 resolved 中的版本或哈希。最新策略不包含预发布或开发分支;平台 SDK 单独配置。
可用依赖名:json、doctest、mira、openssl。名称区分大小写。
--version 可重复,但同一个名称不能重复。--only 与 --version 同用时,每个版本覆盖项都必须出现在 --only 中;拼错名称或遗漏选择会报错,不会默默忽略。版本写上游稳定版本号,例如 JSON 的 3.12.0;不接受 main、nightly、2.0.0-rc1 作为稳定选择。
无需改 Python 脚本。在现有依赖声明的 json、openssl 项中分别添加 "version": "3.12.0"、"version": "4.0.3",保留其余来源字段;mira 项不要加 version。例如下面仅是 json 条目的写法,**不要用这个片段覆盖整个文件**:
然后运行 python scripts/dependencies.py update --file dependencies.json:两个固定库保持所需版本,未固定库选择最新稳定版。只想升级第三个库时,运行 python scripts/dependencies.py update --file dependencies.json --only mira。以后想解除固定,删除该项的 version 字段再主动更新。
优先级与持久性:
更新脚本**更新选择与锁文件,不自动编译整个项目,也不保证新 API 兼容**。它成功退出后,再取回锁定的源码并执行正常构建/测试:
平台 SDK 的选择、额外测试和运行探针沿用 README。多配置生成器的构建和测试要使用相同 --config / -C 配置。已有其他构建目录可继续使用,但更换编译器或平台时应换目录。
检查 git diff -- dependencies.json,确认版本和来源,再提交这份文件的修改。CI 和 Release 使用提交进仓库的锁;不会在构建过程中追随新的 upstream release。build/ 下的源码、下载缓存、构建产物和本地覆盖锁不要提交。
只补缺失的选择、保留有效锁,用底层 resolve:
离线解析成功只说明有匹配元数据;离线构建还需要对应源码/归档缓存与工具链。update --offline 无法发现上游新版本,应使用 resolve --offline。
支持 Aria 源码集成的 CMake 库可用 -DARIA_DEP_JSON_VERSION=3.12.0 等选择本次构建版本。CMake 使用构建目录中的有效锁,不修改根目录解析结果;清空相应缓存参数可恢复项目默认。明确的源码目录覆盖或父工程预先提供的目标优先,由调用者负责版本和内容。Qt 用 -DARIA_DEP_QT_VERSION=6.10.0 选择已安装的精确版本;没有指定时从 CMake 可见的安装位置选择,仍尊重 Qt6_DIR、CMAKE_PREFIX_PATH 和工具链设置。更新脚本不会安装 Qt。
| 现象 | 处理 |
|---|---|
| 未声明的名称、重复参数、选择范围不一致 | 查看依赖声明的键以及 --help,修正参数 |
| 无此稳定版本、预发布版本、下载/API 失败 | 核对上游正式发布;检查网络或 gh 登录/限流;成功前原锁保持不变 |
| 锁内容损坏、SHA256 不符、缓存源码有修改 | 不会跳过验证;先保留本地修改,再恢复可信锁/缓存或使用新的缓存目录 |
| 元数据更新成功,但编译/测试失败 | 新版本可能不兼容;修改集成代码,或恢复已验证的版本要求和锁后重新构建 |
| 本地 Aria checkout 有修改 | 先提交或另存修改,获取器不会直接覆盖 |
回退时,从自己已知通过测试的 Git 提交恢复 dependencies.json(先保留未提交的修改),然后重复上面的获取、构建、测试流程。恢复锁不会自动恢复已编译二进制。不要手改锁中的哈希来绕过校验。
不要删除整个 dependencies.json,它还保存依赖来源与要求。需要刷新时用更新脚本;仅移除某项 resolved 也会让该项下次重新解析,但更新脚本更便于控制范围与失败恢复。
| 参数 | 用途 |
|---|---|
| --only NAME | 只更新某项,可重复 |
| --version NAME=VERSION | 本次版本覆盖,可重复 |
| --file PATH | 使用另一份完整依赖文件 |
| --output PATH | 将结果保存到独立有效文件,保持 --file 输入不变 |
| --cache-dir PATH | 解析时下载的校验缓存目录 |
| --offline | 禁止联网解析;主动更新通常无法在此模式下完成 |
使用另一份完整依赖文件时,向 CMake 传 -DARIA_DEPENDENCIES_FILE=/path/to/dependencies.json。--output 通常供构建目录覆盖使用;仅生成它不会自动改变项目默认。CMake 本地版本覆盖也使用构建目录有效文件,根目录仍只有一份需提交的依赖文件。
本体的 CMake API、离线缓存与 SDK 集成细节见 Dependency versions and reproducible builds。
共享构建同时使用固定版本的 ForgeRecipes 配方。安装 requirements 后,运行 python -m forgedeps init /path/to/deps 初始化共享工作区;通过 scripts/build.py 配置、编译和测试可全程持有依赖图读取租约。更新锁文件后,先重建共享环境再使用新代次。