Добавление рамки в 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