Добавление рамки в XCode 4

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

Я посмотрел Как добавить существующие фреймворки " в 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 для групп
  • Добавлен 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

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

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

Не существует ли какой-либо опции просто включить/выключить копирование связанных фреймворков в окончательный пакет?

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

Ответы

Ответ 1

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

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

И что это.

Ответ 2

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

Что-то вроде этого:

LD_RUNPATH_SEARCH_PATHS = @loader_path/../Frameworks