Cha*_*der 41 xcode swift xcode13
Xcode 13 让我很难构建我的项目,该项目由具有生成代码的构建阶段的目标组成。
例如,一个构建阶段Secrets+Generated.swift只需使用将某些代码回显到该文件中的 shell 脚本即可生成该文件。
构建阶段将该文件定义为输出文件。没有输入文件,没有输入文件列表,也没有输出文件列表,因为只创建/修改了一个文件。
构建项目时几乎总是会失败:
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
Run Code Online (Sandbox Code Playgroud)
有人遇到过这个问题或者知道该怎么办吗?我尝试切换“基于依赖性分析”复选框,但这没有帮助。我在使用 Xcode 12 时没有遇到这个问题。有趣的是,尽管只有一个构建阶段生成该特定文件,但还是出现了重复的错误消息。
顺便提一句。当使用swiftgen、Sourcery或Cuckoo等代码生成工具时,我遇到了同样的问题。
编辑:这是我的构建阶段:
三个标记的构建阶段都会生成一个这样的文件。他们都偶尔会失败。我不知道这是否有什么不同,但这些只是为一个目标(通知服务扩展)定义的,它是我的主应用程序目标的依赖项,因此当我构建应用程序时它只会触发一次。
Tom*_*rst 46
我正在R.swift 中调试类似的问题,我想我已经找到了问题的原因。
Xcode 13 似乎在索引构建期间执行运行脚本构建阶段。这可能会导致索引传递与构建并行地写入文件。
要检查您是否发生这种情况,请将其添加到您的构建脚本中:say $ACTION
在 Xcode 12 上,它只显示“build”,但在 Xcode 13 中,每当我保存 .swift 文件或以其他方式导航时,我都会在编译期间听到它说“indexbuild”通过我的代码。
要防止脚本在索引期间运行,请添加以下检查:
if [ $ACTION != "indexbuild" ]; then
# your script here
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8955 次 |
| 最近记录: |