这只是部分答案,因为我还没有弄清楚如何使用 OpenCV 库来做到这一点。 (弄清楚了。请参阅下面的更新。)但我已经用其他库做到了(SM2D图形视图).
需要发生三件事:
您需要将程序使用的 OpenCV 库复制到应用程序包中。为此(无论如何,在 Xcode 3 中),请将“复制文件”构建阶段添加到您的目标。将库文件从 Xcode 的文件列表拖到构建阶段。双击“复制文件”项并将目标设置为“框架”。
请注意,您需要确保 Xcode 项目中包含的库是库文件,而不是库文件的符号链接。否则,只有符号链接将被复制到您的应用程序包中。
OpenCV框架文件的安装路径需要设置为@executable_path/../Framework
。如果框架是在 Xcode 中构建的,您可以在项目设置中执行此操作。由于 OpenCV 不是在 Xcode 中构建的,因此您需要在事后使用install_name_tool
命令行程序:install_name_tool -id @executable_path/../Frameworks libopencv_imgproc.2.3.1.dylib
。您应该能够在目标的运行脚本构建阶段进行设置。
可执行文件需要在捆绑包中找到该库Frameworks
目录。这就是我目前陷入困境的地方。
Update
我找到了正确的 install_name_tool 命令来让程序查看库(以及让库查看其他库)。有关信息用于部署 OS X 程序的 Qt 页面是关键。
I ran 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 库在哪里可以找到 core 库,并且 highgui 需要知道在哪里可以找到 core 和 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 的构建阶段即可。