我正在开发OpenCV应用程序,我的问题是如何在未安装OpenCV的非开发计算机,机器上部署和分发应用程序?在Mac OSX上使用Xcode4部署和分发OpenCV应用程序
我在Mac OS X Lion上使用Xcode4和OpenCV 2.2。
感谢
我正在开发OpenCV应用程序,我的问题是如何在未安装OpenCV的非开发计算机,机器上部署和分发应用程序?在Mac OSX上使用Xcode4部署和分发OpenCV应用程序
我在Mac OS X Lion上使用Xcode4和OpenCV 2.2。
感谢
什么,我会建议是使用跨平台编译生成器(如改进autotool)。一个非常常见的是CMake的是不那么容易处理,但也不是那么困难,不仅是常见的一种,它是使用OpenCV中...
1)在开发机器上编写应用程序,并写一个CMake的(不要忘了写一个部分使用OpenCV的CMake的)
2)提供您的CMake文件和OpenCV库到非开发机
3)CMake的脚本构建应用程序在目标平台上,如果你写的是正确的,它可以建立opencv(使用自己的OpenCV Cmake),并构建你的应用程序(与你所写的一样)
如果你想进一步,你可以创建一个安装向导或一个包装与CPack为了自动化everyting。
Here is the link where you can download it
朱利安,
这只是一个局部的答案,因为我还没有想出如何使用OpenCV的库做到这一点。 (想通了,看下面更新)但是我用其他库(SM2DGraphView)做过。
有需要发生的三件事情:
你需要复制你的程序使用到的应用程序包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
目录中找到该库。这是我目前卡住的地方。
更新
我找到了正确的install_name_tool命令来获取程序,看看图书馆(和图书馆看到其他图书馆)。关于the Qt page for deploying OS X programs的信息是关键。
我在我的程序的内容/ 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)
所以我用这些命令(而在内容/ 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
然后,我改变的内容/框架目录和使用这些命令,告诉他们在那里安装的库:
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的构建阶段即可。
如果解决方案对您没有帮助,您能否更好地向我们解释您的期望?非常感谢,Julien – jmartel