Это только частичный ответ, потому что я также еще не понял, как это сделать с библиотеками OpenCV. ( Разобрался. См. Обновление ниже. ) Но я сделал это с другими библиотеками ( SM2DGraphView ).
Есть три вещи, которые должны произойти:
Вам необходимо скопировать библиотеки OpenCV, которые использует ваша программа, в комплект приложений. Чтобы сделать это (в Xcode 3, в любом случае), добавьте фазу сборки Copy Files к своей цели. Перетащите файлы библиотеки из списка файлов Xcode на этап сборки. Дважды щелкните элемент «Копировать файлы» и установите место назначения в Frameworks.
Обратите внимание, что вам необходимо убедиться, что библиотека, включенная в ваш проект Xcode, является файлом библиотеки, а не символической ссылкой на файл библиотеки. В противном случае в ваш пакет приложений будет скопирована только символическая ссылка.
Путь установки файлов каркаса OpenCV должен быть установлен на @executable_path/../Framework
. Если бы фреймворк был построен в XCode, вы бы сделали это в настройках проекта. Поскольку OpenCV не встроен в XCode, вам нужно сделать это после факта с помощью программы командной строки install_name_tool
: install_name_tool -id @executable_path/../Frameworks libopencv_imgproc.2.3.1.dylib
. Вы должны быть в состоянии настроить это на этапе сборки Run Script в вашей цели.
Исполняемый файл должен найти библиотеку в каталоге Frameworks
пакета. Вот где я сейчас застрял.
Обновление
Я нашел правильные команды install_name_tool, чтобы программа увидела библиотеки (и библиотеки, чтобы увидеть другие библиотеки). Информация на странице Qt для развертывания программ OS X была ключевой.
Я запустил otool -L
для исполняемого файла в каталоге Contents / MacOS моей программы и увидел [удаленные несоответствующие строки]:
lib/libopencv_core.2.3.dylib (compatibility version 2.3.0, current version 2.3.1)
lib/libopencv_imgproc.2.3.dylib (compatibility version 2.3.0, current version 2.3.1)
lib/libopencv_highgui.2.3.dylib (compatibility version 2.3.0, current version 2.3.1)
Поэтому я использовал эти команды (находясь в каталоге Contents / MacOS), чтобы программа выглядела в нужном месте для библиотек:
install_name_tool -change lib/libopencv_core.2.3.dylib @executable_path/../Frameworks/libopencv_core.2.3.1.dylib CocoaCVTest
install_name_tool -change lib/libopencv_imgproc.2.3.dylib @executable_path/../Frameworks/libopencv_imgproc.2.3.1.dylib CocoaCVTest
install_name_tool -change lib/libopencv_highgui.2.3.dylib @executable_path/../Frameworks/libopencv_highgui.2.3.1.dylib CocoaCVTest
Затем я перешел в каталог Contents / Frameworks и использовал эти команды, чтобы сообщить библиотекам, где они были установлены:
install_name_tool -id @executable_path/../Frameworks/libopencv_core.2.3.1.dylib libopencv_core.2.3.1.dylib
install_name_tool -id @executable_path/../Frameworks/libopencv_imgproc.2.3.1.dylib libopencv_imgproc.2.3.1.dylib
install_name_tool -id @executable_path/../Frameworks/libopencv_highgui.2.3.1.dylib libopencv_highgui.2.3.1.dylib
Теперь библиотеке imgproc нужно указать, где найти библиотеку ядра, а highgui - где найти ядро и imgproc:
install_name_tool -change lib/libopencv_core.2.3.dylib @executable_path/../Frameworks/libopencv_core.2.3.1.dylib libopencv_imgproc.2.3.1.dylib
install_name_tool -change lib/libopencv_core.2.3.dylib @executable_path/../Frameworks/libopencv_core.2.3.1.dylib libopencv_highgui.2.3.1.dylib
install_name_tool -change lib/libopencv_imgproc.2.3.dylib @executable_path/../Frameworks/libopencv_imgproc.2.3.1.dylib libopencv_highgui.2.3.1.dylib
Я все еще сталкиваюсь с проблемой, когда highgui ищет много библиотек в / opt / local / bin, но я довольно уверен, что часть проблемы OpenCV решена. Теперь мне просто нужно получить все эти команды на этапе сборки в XCode.