You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode将脚本生成文件加入测试目标编译列表时提示文件找不到怎么办

问题根因
  • Xcode执行编译流程时,会在所有Run Script阶段运行前,先预校验Compile Sources列表中所有文件的存在性。你手动删除了本地的Mock.generated.swift文件,Xcode预校验时找不到对应路径的文件,即便后续Run Script成功生成了该文件,也会因为预校验不通过抛出Build input file cannot be found报错。
  • 你将文件拖拽进项目后删除本地文件的操作,仅在Xcode项目配置中保留了文件引用,没有对应的本地实体文件,自然会在项目导航栏显示红色缺失标识。
修复方案

方案1:调整构建阶段配置(推荐,无额外依赖)

该方案不需要手动把生成文件加入Compile Sources,也不需要动态修改项目配置,是生成代码类场景的通用解法:

  • 选中项目导航栏中红色的Mock.generated.swift文件,右键删除,选择「Remove Reference」选项,不要选择「Move to Trash」。
  • 打开你新增的Run Script配置页,找到「Output Files」配置项,添加Mock.generated.swift的完整绝对生成路径,推荐用Xcode环境变量拼接,比如示例路径:$(SRCROOT)/你的测试目标名称/Mocks/Mock.generated.swift,替换为你实际的生成路径即可。
  • 可选优化:在「Input Files」配置项中添加你的SwiftyMocky配置文件路径,比如$(SRCROOT)/你的测试目标名称/Mockfile.yml,避免无配置变更时重复执行生成脚本,提升构建速度。
  • 原理:Xcode识别到Run Script的Output Files列表中的文件后,会自动跳过预校验阶段的存在性检查,等Run Script执行完成生成文件后,自动将该文件加入编译序列,无需手动添加到Compile Sources。

方案2:动态修改Compile Sources(不推荐)

可以实现该操作,但维护成本极高,不建议使用:

  • 你需要在Run Script中调用xcodeproj这类Ruby工具(CocoaPods默认依赖该库),在swiftymocky generate执行完成后,读取本地.xcodeproj配置文件,将生成的Mock.generated.swift文件引用添加到测试目标的Compile Sources阶段,再保存项目配置。
  • 不推荐原因:每次构建都会修改项目配置文件,容易引发Git冲突,多开发者协作时风险极高,且Xcode有时不会实时加载修改后的项目配置,反而会引发更多未知编译问题。

内容的提问来源于stack exchange,提问作者Bill David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 07:48:03