Добавление фреймворка в XCode 4 - PullRequest
15 голосов
/ 07 августа 2011

Конечно, я провел исследование, прежде чем опубликовать свой вопрос.

Я посмотрел на
Как "добавить существующие фреймворки" в Xcode 4?
Добавление фреймворкав Xcode 4
Добавление платформы OpenGL в Xcode 4
XCode 4 добавление dylib

, но все становится неправильно.

Моя цель: Добавить (CorePlot) каркас в проект XCode Mac (не iPhone)

Моя среда: OSX Lion 10.7, SDK Lion, XCode 4.1 (4B110)

Мои шаги:

  • Открыл XCode, создал новый проект
  • Скачал CorePlot в каталог моей библиотеки (например, ~ / Applications / LIBS)
  • Открытв настройках проекта через (+) открытое диалоговое окно для добавления каркаса
  • Добавить существующий каркас (+ при необходимости скопировать файлы в группу dest.)
  • Выбранный каталог был ~ / Applications / LIBS / CorePlot / Binaries/MacOS/CorePlot.framework/
  • DnD CorePlot для Frameworks Group
  • Добавлен CorePlot для Build Phases > Link Binary with Libraries

и запустил мой проект

, что я получил это сообщение об ошибке:

dyld: Library not loaded: @loader_path/../Frameworks/CorePlot.framework/Versions/A/CorePlot
Referenced from: /Users/username/Library/Developer/Xcode/DerivedData/metralight-hjuvuwlhgohrtdeepvcymnsaxomc/Build/Products/Debug/metralight.app/Contents/MacOS/metralight
Reason: image not found

И на самом деле, когда я заглянул в данный каталог (приложениеbundle) не было каталога Frameworks, и поэтому связывание не может быть успешным

Я искал еще один и обнаружил, что могу создать Build Rule и скопировать файлы в окончательный двоичный пакет с помощью некоторого сценария, ноэто единственный способ, как это сделать?

Разве нет возможности просто включить / выключить копирование связанных платформ в окончательный комплект?

Обратите внимание, что целевой объект CorePlot '.framework' имеет Dynamic Library Install Name установлен на @loader_path/../Frameworks/CorePlot.framework/Versions/A/CorePlot, поэтому он выглядит в нужном месте в окончательном бинарном пакете

Ответы [ 2 ]

28 голосов
/ 09 августа 2011

После добавления фреймворка через «Добавить существующий фреймворк»

  • Перейти к Project Settings> Build Phases
  • В правом нижнем углу нажмите Add buid phase> Copy Files
  • Выбрать Пункт назначения > Frameworks
  • Перетаскивание фреймворка в список файлов

И это все.

3 голосов
/ 12 июня 2012

Еще одна важная деталь: у вас должен быть «путь поиска во время выполнения», который должен быть определен в проектах, по умолчанию он пуст.

Примерно так:

LD_RUNPATH_SEARCH_PATHS = @loader_path/../Frameworks
...