【发布时间】:2021-11-14 06:27:17
【问题描述】:
Xcode 13 让我很难构建我的项目,该项目由具有生成代码的构建阶段的目标组成。
例如一个构建阶段通过简单地使用一个将一些代码回显到该文件中的 shell 脚本来生成文件Secrets+Generated.swift。
构建阶段将该文件定义为输出文件。没有输入文件,没有输入文件列表,也没有输出文件列表,因为只有一个文件被创建/修改。
几乎在构建项目时,构建失败:
error: input file '[ProjectPath]/Secrets+Generated.swift' was modified during the build
error: input file '[ProjectPath]/Secrets+Generated.swift' was modified during the build
Command CompileSwiftSources failed with a nonzero exit code
有没有人遇到过这个问题或知道该怎么做?我尝试切换复选框“基于依赖分析”,但这没有帮助。我在使用 Xcode 12 时没有遇到这个问题。值得注意的是重复的错误消息,尽管只有一个构建阶段生成该特定文件。
顺便说一句。我在使用 swiftgen、Sourcery 或 Cuckoo 等代码生成工具时遇到了同样的问题。
编辑:这是我的构建阶段: 三个标记的构建阶段都会生成一个这样的文件。他们都偶尔失败。我不知道这是否会有所不同,但这些只是为一个目标(通知服务扩展)定义的,它是我的主应用程序目标的依赖项,所以它只会在我构建应用程序时触发一次。
【问题讨论】:
-
您将运行脚本阶段放在构建阶段的什么位置?
-
@Palle:请看我的编辑。
-
嗯,我有类似的代码生成阶段,据我所知,Swift 从未抱怨过。唯一的区别是这些脚本都作为主应用程序构建的一个阶段运行。是否可以将文件作为主应用程序构建的一部分编写,并将其目标成员资格也设置为通知服务扩展?
-
自早期 Xcode 13 测试版以来遇到同样的问题。它仍然在官方版本中发生。在我们的例子中,错误发生在 R.swift。
-
Xcode 13 版本中仍在发生...