Xcode / clang: почему некоторые, а не все мои заголовки выдают «предупреждение: нет правила для обработки файла xxx для архитектуры arm7» - PullRequest
7 голосов
/ 09 января 2012

Я создаю приложение для iOS 5 с ARC, используя clang на Xcode 4.2 / Lion.Хорошей практикой для меня является попытка избавиться от как можно большего количества предупреждений, но я заблудился на этом.В приложении довольно много классов, но ограниченное количество их заголовочных файлов (8 или 9) выдают предупреждения компоновщика, подобные этому:

warning: no rule to process file '$(PROJECT_DIR)/TKMyClass.h' of type sourcecode.objj.h for architecture arm7`

Я не вижу существенных общих черт между этими заголовками: параявляются сторонним кодом OSS;Остальные все мои.Один - это заголовочный файл обычного C (без соответствующего .c), содержащий только константы, #defines и перечисления;пара - это подклассы UIView и UIViewController, созданные с помощью шаблонов Xcode;остальные - обычные классы Obj-C, некоторые из которых наследуются от NSObject, а некоторые нет.Все (из моих классов) были созданы с нуля в рамках проекта в разное время.И старые, и новые классы не дают никаких предупреждений

Мой проект использует сочетание классов C ++, Objective-C ++ и Objective C.Классами, генерирующими предупреждения, в основном являются Objective C (их реализации находятся в файлах .m), но два сторонних класса реализованы в Objective C ++ (.mm).

В противном случае проект работает нормально и выполняется всимулятор и на iDevices.

К своему стыду, я не особенно знаком со страницами настроек проекта в XCode.Я ожидаю, что решение содержится где-то там, но я не уверен, с чего начать, не ломая вещи.

Ответы [ 2 ]

20 голосов
/ 09 января 2012

Это означает, что вы случайно добавили файлы заголовков для компиляции.Вам нужно зайти в свои проекты Build Phases и удалить все заголовочные файлы из раздела Compile Sources.

2 голосов
/ 09 января 2012

Проверьте свою архитектуру (Project и Target): Standard (armv7) - $ (ARCHS_STANDARD_32_BIT) и перейдите в Build Pharse (Compile Source) и проверьте, что там не должно быть никакого файла .h.

...