这只是部分答案,因为我还没有弄清楚如何使用 OpenCV 库来做到这一点。 (想通了。请参阅下面的更新。)但我已经使用其他库 (SM2DGraphView)。
需要做三件事:
您需要将程序使用的 OpenCV 库复制到应用程序包中。为此(无论如何,在 Xcode 3 中),将 Copy Files 构建阶段添加到您的目标。将库文件从 Xcode 的文件列表拖到构建阶段。双击 Copy Files 项并将目标设置为 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。您应该能够在目标的运行脚本构建阶段进行设置。
可执行文件需要在包的Frameworks 目录中找到库。这是我目前卡住的地方。
更新
我找到了正确的 install_name_tool 命令来让程序查看库(以及查看其他库的库)。 the Qt page for deploying OS X programs 的信息是关键。
我在程序的 Contents/MacOS 目录中的可执行文件上运行了 otool -L 并看到了这个 [非相关行已删除]:
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 中的构建阶段。