DEBUG.WIKI
Evoxt;最高 6.0GHz CPU;高频云服务器 · 免费每周备份;查看配置 →
OnlineSIM:在线接收短信,虚拟号码租用
RackNerd;$21.99/年 · 1GB KVM

nextest 报找不到 build script output,先核对 Cargo 新目录布局支持

升级 nightly Cargo 后旧版 nextest 仍按旧输出结构找文件,会出现 could not find build script output file at。先升级兼容的测试运行器,别禁用build.rs。

升级 nightly 后,cargo nextest run 开始反复警告 could not find build script output file at .../output,路径指向带有新层级的 build 目录。若普通 Cargo 构建没有同样的问题,先检查 nextest 是否仍是旧版本。

明确出现过问题的组合是 Cargo 1.99.0-nightly(2026-07-29)附近工具链与 nextest 0.9.121。2026-07-30 起,Cargo nightly 默认使用 build directory layout v2;旧运行器解析构建产物位置时可能跟不上。即使 build.rs 为空,也不能因此排除运行器与目录布局不兼容。

同时记录 Cargo 与 nextest

从原失败入口读取两个工具版本,检查 CI 镜像、缓存中的可执行文件和本机 PATH。IDE 或终端里升级了 Cargo,不代表 CI 的 cargo-nextest 也已升级。

不要把警告中的 output 文件手工复制到旧目录,也不要给所有构建脚本改输出路径。那会建立一套没有受 Cargo 管理的遗留产物,后续增量构建更难判断。

验证兼容新布局的运行器

nextest 0.9.143 的正式变更记录包含目录布局 v2 适配,也修正了动态库搜索路径中最终产物目录与中间产物目录的区别。该问题的明确反馈中,升级到 0.9.143 后警告消失。

按项目现有工具安装方式选择兼容版本,保留工具版本锁定和 CI 安装配置。不要只让开发机装上新版而继续恢复旧 nextest 可执行文件缓存;若工具以预编译二进制安装,还要核对平台和运行环境要求。

配置了 CARGO_TARGET_DIR 或 build.build-dir 时,将它们一并保留在对照测试中。前者与中间构建目录用途不同,不能简单把任意一个目录加入动态库搜索路径,期待所有产物都能找到。

工具链内部曾有临时关闭新布局的环境变量,但它不适合作为长期项目接口。优先使用明确支持当前布局的运行器;若必须临时固定旧工具链,记录期限和恢复条件,别让内部开关散落到全局 shell。

验收需要运行原来的 nextest 入口,确认构建脚本输出警告消失、测试被正确发现并实际执行。含动态库依赖、example 测试或归档分发的项目还应走对应路径,避免只有测试列表能显示、执行时仍找不到库。恢复版本时连同 Cargo、nextest 和缓存键一起评估,不需要删掉构建脚本或改写生成内容。