【问题标题】:Xcode warning: "Multiple build commands for output file"Xcode 警告:“输出文件的多个构建命令”
【发布时间】: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 所说,没有重复。

【问题讨论】:

    标签: xcode build warnings


    【解决方案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 秒的时间,而且是我发现唯一可行的方法。

            1. 将 repo 拖到回收站。
            2. 重新克隆您的存储库。
            3. 使用正确的远程跟踪设置您的存储库。 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 构建阶段存在重复时,可能会出现这种情况的另一种版本。

                    解决这个问题……

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

                    【讨论】:

                      【解决方案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】:

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

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

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

                          【讨论】:

                            【解决方案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 文件之一。

                                      【讨论】:

                                        猜你喜欢
                                        • 2016-07-13
                                        • 2012-09-18
                                        • 1970-01-01
                                        • 2013-06-11
                                        • 2018-03-29
                                        • 1970-01-01
                                        • 2013-04-17
                                        • 1970-01-01
                                        • 1970-01-01
                                        相关资源
                                        最近更新 更多