2010-08-18 10 views
2

Я пытаюсь распространить зависимости моего приложения с приложением.Связывание библиотек Macports с приложением XCode

У меня есть пакеты macports librsvg, boost и cairo, установленные только на моей системе Snow Leopard на 64-битной основе. Когда я создаю пакет .app моей программы, он не работает на машинах без macports и соответствующих библиотек, установленных, потому что они не включены в приложение, которое ищет библиотеки в/opt.

Я пробовал -статический флаг для статического связывания, но это вызвало ошибки libcrt0.

Каков наилучший способ связывания библиотек MacPorts и их зависимостей с приложением OSX, подходящим для одиночного распространения?

ответ

2

Вы захотите скопировать библиотеки в свой комплект приложений, используя Copy Files Build Phase. dylibs следует поместить в каталог Frameworks в комплекте приложений. Вам также нужно будет добавить библиотеки в проект Xcode.

+0

Должен ли я избавиться от всех каталогов заголовков/библиотек macports, добавленных в пути поиска заголовков и библиотек? Я предполагаю, что на этапе сборки файлов копирования в разделе «Назначение» я помещал «Рамки», а «Путь» получает путь к dylib в папках macports? –

+0

В фазе «Копирование файлов сборки» вы должны установить «Назначение» в «Структуры», но оставить «Путь» пустым - просто перетащите библиотеки в фазу (сначала вам нужно добавить их в свой проект). – mipadi

+0

Я добавил .dylibs на фазу файлов копий, но после сборки otool все еще показывает, что двоичный файл зависит от этих .dylibs в/opt/local/lib. Это нормально? –

0

Попробуйте использовать py2app для создания автономного приложения.

0

Мне нужно было просто сделать это для jsoncpp. Что я сделал, так это то, что я пошел в настройки компоновщика в проекте> Сборка фаз> Связывание двоичных файлов с библиотеками, затем использовал добавление другого, чтобы перейти к пути моей библиотеки и добавить библиотеку из папки, которая будет находиться в папке opt/local/lib по умолчанию настройка для macport linker settings

Получение файлов заголовков было несколько сложнее. В этом случае я попал в usr/Include, чтобы найти файл/папку с заголовками, скопировать его в мой проект и в файл cpp. Я добавил строку include с кавычками («»)

например, перемещен/usr/Include/json в папку проекта RestTemplate с использованием копии. затем добавляется в main.cpp

#include "json/json.h"