Xcode 警告:“输出文件的多个构建命令”

Posted

技术标签:

【中文标题】Xcode 警告:“输出文件的多个构建命令”【英文标题】:Xcode warning: "Multiple build commands for output file" 【发布时间】:2011-02-12 16:17:42 【问题描述】:

我收到这样的错误:

[WARN]警告:输出文件/Developer/B/Be/build/Release-iphonesimulator/BB.app/no.png的多个构建命令

[WARN]警告:输出文件/Developer/B/Be/build/Release-iphonesimulator/BB.app/d.png的多个构建命令

[WARN]警告:输出文件/Developer/B/Be/build/Release-iphonesimulator/BB.app/n.png的多个构建命令

但我检查了 Xcode,根本看不到此类文件的任何重复项。正如 Apple 邮件列表中的 this post 所说,没有重复。

【问题讨论】:

【参考方案1】:

在我的情况下,构建设置中的“产品名称”为空。因此,输出变为 .app 名称为空,导致多个产品。设置产品名称,您就可以开始了。

【讨论】:

【参考方案2】:

这也可能发生在您有多个 xcode 项目在工作区中引用相同库的情况下,即使您构建依赖于单个框架的目标,工作空间也会尝试将相同的库复制到 BUILD 目录.

为了解决这个问题,我使用了: 选择您的目标并单击: -> Edit Sheme -> 正在构建中 - UNCHECK Find implicit dependencies 在某些情况下,我还必须取消选中 Parallelize Build

【讨论】:

【参考方案3】:

评论use_frameworks!在 PodFile 中为我工作。

#use_frameworks!

注意:在 XCode 10.1,pod 版本 1.8.4 上执行此操作

【讨论】:

【参考方案4】:

React-Native 用户。 转到文件-> 工作区设置-> 构建系统-> 将其更改为旧版构建系统。 现在应该可以正常构建了。 React-Native 还不兼容新的文件系统。

【讨论】:

【参考方案5】:

其实这个问题的答案很简单。

在您的 Xcode 项目中搜索引发警告的文件,然后删除其中一个。

Xcode 将在搜索结果中只显示该文件的一个引用,但不要停在那里,继续删除它。 (最好在删除之前备份您的项目文件)

现在再次构建项目。警告现在应该消失了。 (这个答案是针对以前版本的xcode)

【讨论】:

但是文件不再出现在 XCode 的组和文件窗格中。这有什么关系? 如果您仍然遇到此问题,只需从 Xcode 中删除所有文件(不要在磁盘上删除它们)。然后将它们全部拖回。如果之后仍然有问题,那么您实际上有一些具有相同名称的资源(可能在不同的文件夹中) - 查找并重命名/删除。 Xcode 输出进入一个平面文件夹,因此目录结构被忽略。【参考方案6】:

虽然我确信有更好的方法,但使用核武器只用了不到 60 秒的时间,而且是我发现唯一可行的方法。

    将 repo 拖到回收站。 重新克隆您的存储库。 使用正确的远程跟踪设置您的存储库。 git remote add <url.git>,或git remote set-url <url.git>

【讨论】:

【参考方案7】:

关键是做pod deintegraterm *.workspace文件!真是浪费时间!

【讨论】:

【参考方案8】:

一种简单的方法是,

转到应用目标 转到构建阶段 输出文件 删除输出文件的路径,然后构建项目。它将成功运行。

【讨论】:

【参考方案9】:

在项目导航器中,选择您的 Xcode 项目文件。这将向您显示项目设置以及项目中的目标。查看“复制捆绑资源”构建阶段。您应该在该列表中找到有问题的文件两次。删除重复的引用。

Xcode 抱怨您试图将同一个文件与您的应用程序捆绑两次。

【讨论】:

当我从构建文件夹中删除一些资产时(使用 Finder)发生在我身上。将资产替换为使用相同名称更新的资产,并将它们拖到 XCode 中标记“添加到目标”选项。似乎 XCode 不同步复制了 Copy Bundle Resources 中的这些条目 我想为此添加一件事。如果您最终以某种方式得到大量重复引用(就像我所做的那样),您只需单击“验证设置”,它就会自动删除重复引用。比手动查找要容易得多 我遇到了类似的问题。这个答案是最接近的。 .xcodeproj/project.pbxproj 文件有重复的条目,即使项目只显示文件一次。这是一个合并问题。用 vi 编辑成功了 :) 感谢您指出正确的方向 :) 值得注意的是,如果您在 Copy Bundle Resources 阶段有大量重复文件,您可以单击此页面底部的“验证设置”,XCode 会提示您有关重复的内容,并将如果您单击“执行更改”,请删除所有这些。比单独寻找它们要快得多。 当我将“Published-ios”重新添加到项目中时,我遇到了与 SpriteBuilder 模板类似的问题。结果它希望它成为“文件夹引用”而不是组,并将整个文件夹添加到“复制捆绑资源”中。因此,即使单个资源没有出现在该列表中,也要检查以确保它不是从文件夹中添加的。【参考方案10】:

Swift 3:(还有旧版本)当我有重复的资产时会发生这种情况。只需重命名此问题的文件,一切顺利。

当您创建Assets.xcassets 并且您已用新名称重命名重复项时,也可能发生这种情况,因此在一段时间后您忘记了它并将其删除以添加文件夹引用,但这又回到了重复文件问题..

【讨论】:

【参考方案11】:

Headers 构建阶段存在重复时,可能会出现这种情况的另一种版本。

解决这个问题……

    转到您的项目目标 选择Build Phases 选择Headers 构建阶段 输入警告中显示的名称 注意两个(或更多)项目 在左下角找到+|- 框 选择其中一项,然后点击-按钮

【讨论】:

【参考方案12】:

对我来说,Target > Build Settings > Packaging > Product Name 设置为与我的应用程序自定义的 .plist 文件中引用的另一个值相同的值。最终由于我们的构建过程,这会创建重复文件。

【讨论】:

【参考方案13】:

这不是 Xcode 错误,尽管警告消息不足以描述真正的原因。

当您的项目中有多个同名文件时,会出现此错误消息。您只需删除或重命名重复名称的文件即可解决问题。

【讨论】:

是的,这是正确的答案。当你有资源文件时,情况很容易出现,例如具有相同名称但在文件系统上的单独目录中的 png - 在构建过程中,它们都被复制到 1 个目录,即应用程序包。 @Brynjar 是否有解决方法来允许具有相同名称的图像?还是防止图像捆绑在一起? 其实我发现你可以创建文件夹引用来避免捆绑。 这是一种查找具有重复名称的文件的方法,不管目录find . | grep -v \.git | rev | cut -d/ -f1 | rev | sort | uniq -c | sort 但是,这并没有解决我的问题【参考方案14】:

如前所述,如果您在项目导航器中有多个同名但位于不同组(黄色文件夹)中的文件,则会出现此问题。就我而言,这是故意的,因为我有多个子目录,每个子目录都有一个“preview.jpg”,我想将其复制到应用程序包中:

在这种情况下,您需要确保 Xcode 识别 目录 引用(蓝色文件夹图标),而不仅仅是组。

删除有问题的文件并选择“删除参考”(这样我们就不会完全删除它们):

通过将它们拖回到项目导航器中,将它们重新添加到项目中。在出现的对话框中,选择“为任何添加的文件夹创建文件夹引用”:

请注意,文件现在在项目导航器中有一个蓝色文件夹图标:


如果您现在查看目标构建阶段的“复制捆绑资源”部分,您会注意到整个文件夹只有一个条目,而不是目录中包含的每个项目的条目。编译器不会抱怨这些文件的多个构建命令。

【讨论】:

最佳答案!它适用于 Xcode 12.2【参考方案15】:

几分钟前我遇到了同样的问题。我已经提到更改“部署目标”解决了我的问题。

【讨论】:

【参考方案16】:

我找到了一个非常简单的解决方案:

    从项目导航器中选择导致问题的文件 从文件检查器中取消选中目标成员 构建项目 再次检查文件的目标成员身份

警告消失了!检查此图像以供参考。

【讨论】:

【参考方案17】:

这不是错误。 Xcode 助手可以为您提供帮助。选择项目导航器左侧的目标。单击设置底部的“验证设置”。 Xcode 将检查设置并尽可能删除重复项。

【讨论】:

【参考方案18】:

打开项目中的 Frameworks 文件夹,确保里面只有框架。我错误地添加了整个 Developer 文件夹!

【讨论】:

【参考方案19】:

这是因为你的“no.png”“d.png”和“n.png”在资源中重复。只需寻找删除重复文件并删除即可。

【讨论】:

【参考方案20】:

在我的情况下,问题是由组内目标和文件夹的相同名称引起的。

只需重命名冲突的文件或文件夹即可解决问题。

【讨论】:

这和我的差不多。我有 2 个具有相同模块名称的单独目标。【参考方案21】:

关于这个问题的另一个变体。我收到了同样的消息,以前建议的解决方案都没有解决问题(例如,我肯定只有一份有问题的文件)。

我的解决方案是在文本编辑器中编辑 project.pbxproj 文件(当然是在退出 XCode 并备份文件之后)并删除对有问题文件的所有引用。然后,再次启动 XCode 后,我手动将文件添加回项目中,一切正常。

(我的怀疑是这个问题发生在我身上是因为一个手册,即:非XCode,项目文件的合并。)

【讨论】:

【参考方案22】:

我很确定这可能是由 XCode 4 错误引起的,至少在我遇到的情况下是这样。

如果您同时将多个语言相关文件添加到项目中,就会发生这种情况。我通过查看 git 差异发现了这一点。我在提交中什么也没做,只是添加了一些新的本地化 nib 文件。但是回顾 project.pbxproj 文件的不同之处,它显示了为之前已经在项目中的文件添加的一堆新的重复引用。它这样做的文件对我来说也是随机的。

我多次重现了同样的行为。

从项目中删除这些文件并不能解决问题,因为它只会删除原始引用并保留重复项。修复它的唯一方法是返回提交并重新开始,或者手动编辑项目文件,这是一个非常好的方法来搞砸它,因为很难说出要删除哪些重复项,你必须这样做在很多不同的地方。

Xcode 4 让我非常失望。

【讨论】:

看起来这在 XCode 4.2 中已修复。在早期版本中,您可以通过首先将要为其添加本地化的文件放入它自己的“组”(项目中的虚拟文件夹)中来避免此错误。添加完本地化后,您可以将其放回原来的位置并删除您创建的临时组。 这不是错误。这是由于您的项目中有多个同名文件。 当你本地化一个文件时,你应该为每个本地化使用相同的文件名,除了在不同的目录中。这确实是一个错误。【参考方案23】:

当您添加基于 git 的子项目时,这很容易引起。 Xcode 不够聪明,无法忽略 .git 子文件夹,即使您无法从 finder 中看到它,所以如果有多个名为“master”或“exclude”的文件(标准 git repo 文件),它会非常困惑。使用 Xcode4,转到项目(左侧树的根目录),然后单击您的应用程序目标并展开“复制捆绑资源”,然后删除对 .git 的所有引用,无论如何您都不需要将它们烘焙到您的应用程序中。

【讨论】:

我摸索了一秒钟,所以这可能对某人有所帮助:应用目标 -> 构建阶段 -> 复制捆绑资源 我的 Xcode 项目中有多个同名的文件(但在不同的目录中)。不小心我的一个在 Copy Bundle Resources 步骤中同时拥有它们,这将导致其中一个在生成的应用程序包中被覆盖。只需删除其中一个即可。【参考方案24】:

当您对同一文件有多个引用时,似乎会出现该错误。 我有 2 个同名文件并收到此错误。当我删除其中一个错误消失..

【讨论】:

【参考方案25】:

如果项目中有 2 个同名文件,就会发生这种情况。即使在编译项目时文件在 XCode 中的组中,所有文件最终都在同一个目录中。换句话说,如果你有 /group1/image.jpg 和 /group2/image.jpg 编译的项目将只有两个 image.jpg 文件之一。

【讨论】:

以上是关于Xcode 警告:“输出文件的多个构建命令”的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 中检查多个变量值

在 xcode 中为新项目 React Native 100 多个问题

Xcode警告汇总分析

XCode 错误/警告问题/如何对 XCode 缓存进行核对

在 gitlab 日志中禁用 xcode 警告

处理Xcode 警告