Добавление OCHamcrest в проект IOS - PullRequest
1 голос
/ 20 июня 2011

В документации к проекту написано, что просто добавьте фреймворк и флаги компоновщика, и все готово.Часы и часы потерянного времени спустя я понял, что это не так.Если вы это сделаете, проект не увидит заголовочные файлы.Вы должны поместить фреймворк где-нибудь, где компилятор найдет заголовки.В моем случае это сработало, когда я поместил фреймворк в / Developer / Library / Frameworks, а затем велел ему вернуться к поиску в этом каталоге фреймворка (не возиться с поисковыми каталогами заголовков).

Тогда проблема, с которой я столкнулся, заключается в том, что ссылка перестала работать с сообщением:

ld: framework not found OCHamcrestIOS

Я заметил, что в документации по проекту написано, что он был обновлен для Xcode 4. Я снялдвоичный код фреймворка после проверки кода и траты времени, неспособного построить версию IOS фреймворка.

Документация здесь .

В этой документации я также заметил, что в инструкциях по какао сказано, что в сборку нужно включить фазу копирования файлов.Я попробовал это.Не изменил результат.

В последний раз, когда я упал в яму, это было потому, что библиотека была C ++ кодом.Может быть, это все еще проблема.

За исключением быстрого решения здесь, я собираюсь вернуться к использованию STAsserts, как ни печально, но это намного, гораздо хуже.


Обновление: переустановил Xcode.Все еще не работает.Есть дешевые способы сделать это, например, добавить файлы заголовков в проект.Сделал сообщение в блоге об этом, которое выявило человека с таким же опытом.

Ответы [ 2 ]

1 голос
/ 20 июня 2011

Я использую ряд фреймворков в своих проектах.Некоторые из других людей, а некоторые мои.Глядя на документацию, я могу предположить, что этап копирования не предназначен для разработки под iOS.Так что я бы не стал этого делать.Я скачал последнюю версию zip из https://github.com/jonreid/OCHamcrest, и она, похоже, содержит готовую статическую библиотеку iOS.(Не на моем Mac, поэтому я не могу проверить, чтобы подтвердить).

В любом случае, я включаю статические библиотеки в

  • Выберите проект (XCode 4).
  • Выберите цель, к которой я хочу добавить библиотеку.
  • Перейдите на вкладку «Фазы сборки».
  • Разверните ссылку на бинарный файл с библиотеками.
  • Нажмите кнопку [+], чтобы добавить каркас.
  • Нажмите [Добавить другие ...] и перейдите в каталог, содержащий каталог .framework , и выберите его.

Это все.Пути поиска целей будут обновлены для включения каталога фреймворка, а фреймворк будет указан слева под проектом.Развернув его, вы увидите заголовки.

Проблема, о которой вы говорите, звучит как пара вещей.Во-первых, не найденный фреймворк звучит так, как если бы фреймворк не был включен в цель.Когда вы выберете фреймворк в списке проектов слева, вы сможете увидеть его Целевое членство , отображаемое справа.Убедитесь, что он включен для цели, которую вы компилируете.

Во-вторых, сборка фреймворков не является тривиальной задачей, поэтому не пытайтесь выполнить ее, если у вас нет сценариев для этого.Я говорю это потому, что создание статической платформы iOS означает компиляцию как для симулятора, так и для устройств, объединение скомпилированных файлов lib в универсальный, а затем сохранение его и заголовка в определенной структуре каталогов.

Однако загруженный zip-архив с OCHamcrest содержит правильную структуру OCHamcrestiOS.framwork.Так что если вы храните этот каталог где-то и ссылаетесь на него, используя шаги, которые я описал выше, он должен работать просто отлично.

0 голосов
/ 21 июня 2011

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

  1. Создайте группу внутри проекта Xcode под названием Third Party.
  2. Свяжите его с папкой Thirdparty.
  3. Перейдите в Add Files in Xcode и выберите фреймворк.
  4. Перетащите его в зависимости.
  5. Запустите тесты, они проходят!

Это может быть предпочтительнее в любом случае, потому что ссылка на него в / System / Library / Frameworks создаст некоторые проблемы с версиями, и это может быть настроено очень быстро. Кроме того, у нас есть сервер непрерывной интеграции, и нам приходится заходить туда и синхронизировать версии, когда что-то меняется, не так уж и хорошо.

Спасибо за проверку, Дерек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...