2015-01-27 2 views
3

У меня есть несколько файлов, перечисленных в compile sources, и он не хочет сортировать по имени, поэтому я застрял, чтобы сортировать их вручную, ища дубликаты. Есть ли более простой способ сделать это? Это всего ~ 100 файлов, но было бы неплохо узнать более эффективный способ.Как найти расположение дублирующего символа

Пример ошибки:

... 
duplicate symbol _OBJC_CLASS_$_AppDelegate in: 
    /Users/xxxx/Library/Developer/Xcode/DerivedData/JOMiPhoneApp-ginylosefnqdjpfprrdipmpewzun/Build/Intermediates/MyApp.build/Debug-iphoneos/MyApp.build/Objects-normal/arm64/AppDelegate-215945057A88172.o 
ld: 34 duplicate symbols for architecture arm64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
+0

Что другое место является дубликатом найти в? (То есть, когда компоновщик говорит _OBJC_CLASS _ $ _ AppDelegate является дубликатом, он также должен был найти его в одном или нескольких других файлах .o.) –

ответ

5

Если потянуть навигатор отчета, выберите сборку с предупреждением, а затем разверните детали консоли для неисправной компиляции, он должен точно описать, где оба из дублирующих ссылок являются (в моем примере, в AppDelegate.o и ViewController.o, последний, потому что я «случайно» сделал #import из AppDelegate.m, а не AppDelegate.h в ViewController.m):

enter image description here

В навигаторе проекта на левой панели нажмите на вкладку поиска и найдите AppDelegate. Во всяком случае, вы можете осуществлять поиск по всему вашему проекту, как так:

enter image description here

Вы можете также искать символ, введя команду + сдвиг + O (буква «О»):

search for symbols

Этот последний подход будет только найти его, если у вас есть AppDelegate символ, определенный в другом исходном файле с, но это еще один способ рассмотреть.

+0

Я использовал этот подход, но проверял «дубликат файла» в 'Build Phases' и конечно же, нашел файлы. Заинтересованы достаточно 34 ошибок, но только 3 файла, которые были дублированы. – Jacksonkr

1

Нажмите на вкладке Навигатор отчетов в Xcode (команда), затем нажмите на сборку, которая показывает красный значок ошибки сборки. Он должен показать вам более конкретно, где он находит ошибку. Если вы хотите еще больше информации, нажмите на кнопку «гамбургер» -style на право:

screenshot showing hamburger button

Смежные вопросы