提问人:Futur 提问时间:4/27/2010 最后编辑:CommunityFutur 更新时间:9/24/2023 访问量:150510
Xcode 警告:“输出文件的多个构建命令”
Xcode warning: "Multiple build commands for output file"
问:
我收到这样的错误:
[警告]警告:输出文件 /Developer/B/Be/build/Release-iphonesimulator/BB.app/no.png 的多个构建命令
[警告]警告:输出文件 /Developer/B/Be/build/Release-iphonesimulator/BB.app/d.png 的多个构建命令
[警告]警告:输出文件 /Developer/B/Be/build/Release-iphonesimulator/BB.app/n.png 的多个构建命令
但是我已经检查了Xcode,我根本没有看到此类文件的任何重复项。正如 Apple 邮件列表中的这篇文章所说,没有重复项。
答:
实际上,这个问题的答案很简单。
在 Xcode 项目中,搜索引发警告的文件,然后删除其中一个文件。
Xcode在搜索结果中只会显示该文件的一个引用,但不要止步于此,请继续删除它。(最好在删除项目文件之前对其进行备份)
现在再次生成项目。警告现在应该消失了。 (此答案适用于以前版本的 Xcode)
评论
如果项目中有 2 个同名文件,则会发生这种情况。即使文件在 XCode 中成组,在编译项目时,所有文件最终都会位于同一目录中。换句话说,如果您有 /group1/image.jpg 和 /group2/image.jpg,则编译的项目将只有两个 image.jpg 文件中的一个。
这不是 Xcode 错误,尽管警告消息不足以描述真正的原因。
当项目中有多个同名文件时,会出现此错误消息。您只需删除或重命名具有重复名称的文件,问题就解决了。
评论
find . | grep -v \.git | rev | cut -d/ -f1 | rev | sort | uniq -c | sort
当您对同一文件有多个引用时,似乎会出现错误。 我有 2 个同名文件并收到此错误。当我删除其中一个时,错误消失了。
当您添加基于 git 的子项目时,很容易导致这种情况。Xcode 不够聪明,无法忽略 .git 子文件夹,即使您无法从 finder 中看到它,因此会非常困惑有多个名为“master”或“exclude”的文件(标准 git repo 文件)。使用 Xcode4,转到项目(左侧树的根目录),然后单击您的应用程序目标并展开“复制捆绑资源”,然后删除所有对 .git 的引用,无论如何您都不需要将它们烘焙到您的应用程序中。
评论
在 Project Navigator 中,选择您的 Xcode 项目文件。这将向您显示项目设置以及项目中的目标。查看“复制捆绑包资源”构建阶段。您应该在该列表中找到有问题的文件两次。删除重复的引用。
Xcode 抱怨您两次尝试将同一文件与应用程序捆绑在一起。
评论
我很确定这可能是由 XCode 4 错误引起的,至少在我遇到过的情况下是这样。
如果同时将多个语言相关文件添加到项目中,就会发生这种情况。我通过查看 git 差异发现了这一点。我在提交中什么也没做,只是添加了一些新的本地化笔尖文件。但是,回顾 project.pbxproj 文件的差异,它显示了为之前项目中已有的文件添加的一堆新的重复引用。它这样做的文件对我来说也是随机的。
我多次重现了相同的行为。
从项目中删除这些文件并不能解决问题,因为它只会删除原始引用并保留重复项。修复它的唯一方法是返回提交并重新开始,或手动编辑项目文件,这是进一步搞砸它的好方法,因为很难分辨要删除哪些重复项,而且您必须在很多不同的地方进行。
Xcode 4 对我来说只是一个巨大的失望。
评论
这个问题的另一种变体。我收到了相同的消息,以前建议的解决方案都没有解决问题(例如,我肯定只有一个违规文件的副本)。
我的解决方案是在文本编辑器中编辑 project.pbxproj 文件(当然是在退出 XCode 并备份文件之后)并删除对违规文件的所有引用。然后,再次启动 XCode 后,我手动将文件添加回项目中,一切正常。
(我怀疑这个问题发生在我身上是因为一本手册,即:非XCode,项目文件的合并。
就我而言,该问题是由组内目标和文件夹的名称相同引起的。
只需重命名冲突的文件或文件夹即可解决问题。
评论
发生这种情况是因为您的“no.png”,“d.png”和“n.png”在资源中重复。只需查找删除相关文件并删除即可。
这不是一个错误。Xcode 助手可以为您提供帮助。在项目导航器中选择左侧的目标。单击设置底部的“验证设置”。Xcode 将检查设置并在可能的情况下删除重复项。
打开项目中的 Frameworks 文件夹,并确保里面只有框架。我错误地添加了整个开发人员文件夹!
我为此找到了一个非常简单的解决方案:
- 从项目导航器中选择导致问题的文件
- 从文件检查器中取消选中目标成员资格
- 生成项目
- 再次重新检查文件的目标成员身份
警告消失了!检查此图像以供参考。
几分钟前我遇到了同样的问题。我已经提到更改“部署目标”解决了我的问题。
如前所述,如果在项目导航器中有多个同名文件,但位于不同的组(黄色文件夹)中,则会出现此问题。就我而言,这是故意的,因为我有多个子目录,每个子目录都有一个“preview.jpg”,我想将其复制到应用程序包中:
在这种情况下,您需要确保 Xcode 能够识别目录引用(蓝色文件夹图标),而不仅仅是组。
删除有问题的文件并选择“删除引用”(这样我们就不会完全删除它们):
将它们拖回项目导航器中,将它们重新添加到项目中。在出现的对话框中,选取“为任何添加的文件夹创建文件夹引用”:
请注意,这些文件现在在项目导航器中有一个蓝色文件夹图标:
如果您现在查看目标构建阶段的“复制捆绑包资源”部分,您会注意到整个文件夹只有一个条目,而不是目录中包含的每个项目的条目。编译器不会抱怨这些文件的多个生成命令。
评论
对我来说,目标>生成设置>打包>产品名称设置为与 .plist 文件中引用的另一个值相同,该文件是为我的应用程序自定义的。最终,由于我们的构建过程,这会创建重复的文件。
当 Headers 生成阶段存在重复项时,可能会出现这种情况的另一个版本。
要解决这个问题...
- 转到您的项目目标
- 选择
Build Phases
- 选择生成阶段
Headers
- 输入警告中显示的名称
- 请注意两个(或更多)项目
- 找到左下角的框
+|-
- 选择其中一个项目,然后单击按钮
-
Swift 3:(还有旧版本)当我的资产有重复项时,就会发生这种情况。只需重命名带有此问题的文件,一切顺利。
当您制作一个并且您用新名称重命名了重复项时,也可能会发生这种情况,因此在一段时间后您忘记了它并删除它以添加文件夹引用,但这个又回到了重复文件问题。Assets.xcassets
虽然我确信有更好的方法,但核弹只花了我不到 60 秒,而且是我能找到的唯一有效的方法。
- 将 repo 拖到废纸篓。
- 重新克隆存储库。
- 使用正确的远程跟踪设置存储库。或
git remote add <url.git>
git remote set-url <url.git>
一个简单的方法是,
- 转到应用目标
- 转到构建阶段
- 输出文件
- 删除输出文件的路径,然后构建项目。它将成功运行。
关键是要做和归档!真是浪费时间!pod deintegrate
rm *.workspace
React-Native 用户。 转到文件 -> 工作区设置 -> 生成系统 ->将其更改为旧版生成系统。 它现在应该构建得很好。 React-Native 还不兼容新的文件系统。
评论use_frameworks!在 PodFile 中对我有用。
#use_frameworks!
注意:在 XCode 10.1 pod 版本 1.8.4 上执行此操作
如果工作区中有多个引用同一库的 xcode 项目,则 worksapce 也会尝试将同一库复制到 BUILD 目录,即使您构建的目标依赖于单个框架,也可能会发生这种情况。
为了解决这个问题,我使用了:
选择您的目标并单击:
-> -> 正在构建中 - 取消选中 在某些情况下,我还必须取消 Parallelize BuildEdit Sheme
Find implicit dependencies
就我而言,Build Settings 中的“产品名称”是空的。因此,输出变为 .app 名称为空,导致多个产品。设置一个产品名称,你就可以开始了。
对我来说,这是因为我更改了项目文件夹名称。
我通过更改项目文件夹名称来解决它 Targer 应用程序>构建设置> info.plist 文件在此处更改文件夹名称。
评论