«Относительно текущего SDK» не работает при смешивании статической библиотеки Mac Framework и iPhone - PullRequest
1 голос
/ 26 апреля 2010

У меня есть структура кода, которую я поддерживаю. У него есть Mac и iphone Objective-C код. И некоторые из них являются общими. У меня нет проблем с кодом. Это проблема с Xcode.

Давайте просто назовем мой фреймворк "AwesomeKit" для этой проблемы.

Первым делом я создал проект xcode Framework под названием «AwesomeKit». Добавьте к нему исходные файлы, свяжите их с общими платформами Mac: тональный крем, какао, углерод и т. Д. Он прекрасно компилируется.

Затем добавьте новую цель «статическая библиотека», назовем ее «AwesomeKit-iPhone» и установите базовый SDK в настройках сборки на устройство iphone 3.1.3.

Проблема возникает, когда я пытаюсь добавить «Существующие фреймворки» к цели AweseomKit-iPhone.

  • Сначала измените текущую цель сборки на AwesomeKit-iPhone.
  • Щелкните правой кнопкой мыши по любой группе и выберите «Добавить> Существующие фреймворки ...»
  • Выберите UIKit.framework

UIKit будет немедленно выделен красным, как если бы он отсутствовал. Это действительно отсутствует, потому что XCode использует параметр «Relative SDK» из «Mac OS 10.6» SDK. Когда он должен использовать его относительно базового устройства SDK iphone текущей цели 3.1.3.

Какого черта? Кто-нибудь испытывал это? Это действительно раздражает.

Ответы [ 3 ]

1 голос
/ 06 октября 2010

Я нашел решение для этого. Вы должны отредактировать файл project.pbxproj внутри каталога project.xcodeproj. Найдите любые записи, такие как "SDKROOT = XXX" и измените их на настоящий базовый корень. Вероятно, лучше всего посмотреть другой файл project.pbxproj, в котором он правильно установлен. Я использовал это несколько раз сейчас и работает как шарм. Обычно в project.pbxproj есть 2 или более записей SDKROOT.

0 голосов
/ 05 октября 2010

Я сейчас в одной лодке, XCode продолжает устанавливать неправильный SDK перед фреймворками. Это проект с целями OSX и iOS. Но, похоже, что-то действительно не так с моими настройками Project Build. Ваши скриншоты не показывают их, но вы можете проверить их. В моем случае многие записи являются дубликатами. Итак, у меня есть две категории «Архитектура», полностью идентичные. Если я меняю один, другой меняется вместе с ним. Это может быть связано с проблемой выбора неправильного SDK. Я думаю, что файл проекта поврежден, и сейчас я пытаюсь выяснить, могу ли я исправить это вручную.

0 голосов
/ 26 апреля 2010

Я думаю, что видел твою проблему. Я все еще новичок в этом, но что я обнаружил, когда универсальные статические библиотеки для симуляторов и устройств, так это то, что лучше оставить для Xcode Active SDK значение «Базовый SDK», а не выбирать SDK. В этом режиме текущий SDK является SDK выбранной цели.

Активный SDK похож на переопределение sdk в командной строке. Если вы установили yoy, настройки SDK для целей будут отменены.

Так что в моем случае я хотел, чтобы одновременно запускались две цели, одна с использованием симулятора sdk, который компилируется для архитектуры i386, а другая указывала на устройство sdk, которое создает универсальную библиотеку для архитектур armv6 / armv7.

Я видел красный не найденный материал, и я, кажется, помню, что это сделало его безнадежным. У меня также был установлен SDK проекта для устройства, а не для Mac. Помните, что цели отменяют это, так что это хороший способ убедиться, что XCode указывает на правильный SDK, не влияя на настройки целей и окончательную сборку.

...