Предупреждение XCode: «Несколько команд сборки для выходного файла» - PullRequest
483 голосов
/ 27 апреля 2010

Я получаю ошибку, подобную этой:

[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 говорится, что дубликатов нет.

Ответы [ 21 ]

799 голосов
/ 14 апреля 2011

В Project Navigator выберите файл проекта Xcode. Это покажет вам настройки проекта, а также цели в проекте. Посмотрите на фазу сборки «Копирование комплекта ресурсов». Вы должны найти оскорбительные файлы в этом списке дважды. Удалить дубликат ссылки.

XCode жалуется, что вы пытаетесь связать один и тот же файл с вашим приложением два раза.

124 голосов
/ 12 марта 2011

Это легко вызывается при добавлении подпроектов на основе git. XCode не достаточно умен, чтобы игнорировать подпапку .git, даже если вы не можете увидеть ее из Finder, поэтому он очень запутается, что существует несколько файлов с именами «master» или «exclude» (стандартные файлы git repo). С Xcode4 перейдите в проект (корень левого дерева), затем щелкните цель вашего приложения и разверните «Копировать ресурсы комплекта», а затем удалите все ссылки на .git, в любом случае вам не нужно, чтобы они запекались в вашем приложении.

105 голосов
/ 01 мая 2010

На самом деле ответ на этот вопрос очень прост.

В вашем xcode найдите файлы, которые выдают предупреждение, и просто удалите его.

Xcode покажет только одну ссылку на этот файл в результатах поиска, но не останавливайтесь на этом, продолжайте и удалите его. (лучше сделать резервную копию вашего файла проекта перед операцией удаления)

Теперь сделайте сборку, вы увидите, что предупреждение удалено. (этот ответ для предыдущей версии xcode)

52 голосов
/ 21 декабря 2010

Это не ошибка XCode, хотя предупреждающее сообщение недостаточно полезно для описания реальной причины.

Это сообщение об ошибке появляется, когда в вашем проекте несколько файлов с одинаковыми именами. Вам просто нужно удалить или переименовать файлы с повторяющимися именами, и проблема решена.

26 голосов
/ 10 ноября 2010

Это происходит, если у вас есть 2 файла с одинаковым именем в проекте. Несмотря на то, что файлы находятся в группах в XCode, когда проект компилируется, все файлы оказываются в одном каталоге. Другими словами, если у вас есть /group1/image.jpg и /group2/image.jpg, у скомпилированного проекта будет только один из двух файлов image.jpg.

17 голосов
/ 25 сентября 2013

Как упоминалось ранее, эту проблему можно увидеть, если у вас есть несколько файлов с одинаковым именем, но в разных группах (желтых папках) в навигаторе проекта. В моем случае это было сделано намеренно, так как у меня было несколько подкаталогов, каждый с файлом «preview.jpg», который я хотел скопировать в комплект приложения:

group references

В этой ситуации вам необходимо убедиться, что XCode распознает справочник каталога (синий значок папки), а не только группы.

Удалите поврежденные файлы и выберите «Удалить ссылку» (чтобы мы не удаляли их полностью):

remove group references


Повторно добавьте их в проект, перетащив их обратно в навигатор проекта. В появившемся диалоговом окне выберите «Создать ссылки на папки для любых добавленных папок»:

add as folder references


Обратите внимание, что файлы теперь имеют синий значок папки в навигаторе проекта:

folder references


Если вы сейчас загляните в раздел «Копирование комплекта ресурсов» на этапах сборки цели, то заметите, что для всей папки существует одна запись, а не записи для каждого элемента, содержащегося в каталоге. Компилятор не будет жаловаться на множественные команды сборки для этих файлов.

15 голосов
/ 22 февраля 2012

Это не ошибка. Ассистенты XCode могут помочь вам. Выберите цель, слева в навигаторе проекта. Нажмите «Подтвердить настройки» в нижней части настроек. Xcode проверит настройки и по возможности удалит дубликаты.

14 голосов
/ 11 октября 2014

другая версия этой ситуации может возникнуть, если в фазе сборки Headers есть дубликаты.

чтобы это исправить ...

  1. перейти к цели вашего проекта
  2. выберите Build Phases
  3. выберите Headers этап сборки
  4. введите имя, указанное в предупреждении
  5. обратите внимание на два (или более) предмета
  6. найдите поля +|- в левом нижнем углу
  7. выберите один из элементов и нажмите кнопку -
7 голосов
/ 21 августа 2011

В моем случае проблема была вызвана тем же именем цели и папки внутри группы.

Просто переименуйте конфликтующий файл или папку, чтобы решить проблему.

6 голосов
/ 28 августа 2012

Я нашел довольно простое решение для этого:

  1. Выберите файл, вызывающий проблему, в навигаторе проекта
  2. Снимите флажок целевого членства с инспектора файлов
  3. Сборка проекта
  4. Еще раз проверьте целевое членство для файла

Предупреждение ушло! Проверьте это изображение для справки.

enter image description here

...