Deploying QT and OpenCV application on Mac OS X
Many developers asking how to deploy QT and OpenCV application for MacOS. This is not hard task.
Deploying of QT framework is a simple task. Recent QT4 framework has simple utility "macdeployqt" to deploy QT with your application. Just run it from terminal using this command:
/usr/local/Trolltech/Qt-4.7.3/bin/macdeployqt "MyProgram.app"
Qt-4.7.3 - Your Qt Framework version, MyProgram.app - Your application.
macdeployqt will automatically copy used OpenCV libraries into Framework folder. All you need to do is to update libraries IDs and references. This can be done using install_name_tool standard Mac utility.
In this example, "MyProgram.app" uses these 3 OpenCV 2.3.1 libs - core, highgui and imgproc.
Firstly updating IDs:
install_name_tool -id @executable_path/../Frameworks/libopencv_core.2.3.dylib "MyProgram.app/Contents/Frameworks/libopencv_core.2.3.dylib"
install_name_tool -id @executable_path/../Frameworks/libopencv_highgui.2.3.dylib "MyProgram.app/Contents/Frameworks/libopencv_highgui.2.3.dylib"
install_name_tool -id @executable_path/../Frameworks/libopencv_imgproc.2.3.dylib "MyProgram.app/Contents/Frameworks/libopencv_imgproc.2.3.dylib"
Changing libraries references:
install_name_tool -change lib/libopencv_core.2.3.dylib @executable_path/../Frameworks/libopencv_core.2.3.dylib "MyProgram. app/Contents/MacOS/MyProgram"
install_name_tool -change lib/libopencv_highgui.2.3.dylib @executable_path/../Frameworks/libopencv_highgui.2.3.dylib "MyProgram.app/Contents/MacOS/MyProgram"
install_name_tool -change lib/libopencv_imgproc.2.3.dylib @executable_path/../Frameworks/libopencv_imgproc.2.3.dylib "MyProgram.app/Contents/MacOS/MyProgram"
install_name_tool -change lib/libpng15.15.dylib @executable_path/../Frameworks/libpng15.15.dylib "MyProgram.app/Contents/MacOS/ MyProgram"
Changing internal libraries cross-references:
install_name_tool -change lib/libopencv_core.2.3.dylib @executable_path/../Frameworks/libopencv_core.2.3.dylib "MyProgram.app/Contents/Frameworks/libopencv_highgui.2.3.dylib"
install_name_tool -change lib/libopencv_imgproc.2.3.dylib @executable_path/../Frameworks/libopencv_imgproc.2.3.dylib "MyProgram.app/Contents/Frameworks/libopencv_highgui.2.3.dylib"
install_name_tool -change lib/libopencv_core.2.3.dylib @executable_path/../Frameworks/libopencv_core.2.3.dylib "MyProgram.app/Contents/Frameworks/libopencv_imgproc.2.3.dylib"
Done!
Now you can create simple DMG installer and use your application on any Mac OS without installing OpenCV libraries.
Many developers asking how to deploy QT and OpenCV application for MacOS. This is not hard task.
Deploying of QT framework is a simple task. Recent QT4 framework has simple utility "macdeployqt" to deploy QT with your application. Just run it from terminal using this command:
/usr/local/Trolltech/Qt-4.7.3/bin/macdeployqt "MyProgram.app"
Qt-4.7.3 - Your Qt Framework version, MyProgram.app - Your application.
macdeployqt will automatically copy used OpenCV libraries into Framework folder. All you need to do is to update libraries IDs and references. This can be done using install_name_tool standard Mac utility.
In this example, "MyProgram.app" uses these 3 OpenCV 2.3.1 libs - core, highgui and imgproc.
Firstly updating IDs:
install_name_tool -id @executable_path/../Frameworks/libopencv_core.2.3.dylib "MyProgram.app/Contents/Frameworks/libopencv_core.2.3.dylib"
install_name_tool -id @executable_path/../Frameworks/libopencv_highgui.2.3.dylib "MyProgram.app/Contents/Frameworks/libopencv_highgui.2.3.dylib"
install_name_tool -id @executable_path/../Frameworks/libopencv_imgproc.2.3.dylib "MyProgram.app/Contents/Frameworks/libopencv_imgproc.2.3.dylib"
Changing libraries references:
install_name_tool -change lib/libopencv_core.2.3.dylib @executable_path/../Frameworks/libopencv_core.2.3.dylib "MyProgram. app/Contents/MacOS/MyProgram"
install_name_tool -change lib/libopencv_highgui.2.3.dylib @executable_path/../Frameworks/libopencv_highgui.2.3.dylib "MyProgram.app/Contents/MacOS/MyProgram"
install_name_tool -change lib/libopencv_imgproc.2.3.dylib @executable_path/../Frameworks/libopencv_imgproc.2.3.dylib "MyProgram.app/Contents/MacOS/MyProgram"
install_name_tool -change lib/libpng15.15.dylib @executable_path/../Frameworks/libpng15.15.dylib "MyProgram.app/Contents/MacOS/ MyProgram"
Changing internal libraries cross-references:
install_name_tool -change lib/libopencv_core.2.3.dylib @executable_path/../Frameworks/libopencv_core.2.3.dylib "MyProgram.app/Contents/Frameworks/libopencv_highgui.2.3.dylib"
install_name_tool -change lib/libopencv_imgproc.2.3.dylib @executable_path/../Frameworks/libopencv_imgproc.2.3.dylib "MyProgram.app/Contents/Frameworks/libopencv_highgui.2.3.dylib"
install_name_tool -change lib/libopencv_core.2.3.dylib @executable_path/../Frameworks/libopencv_core.2.3.dylib "MyProgram.app/Contents/Frameworks/libopencv_imgproc.2.3.dylib"
Done!
Now you can create simple DMG installer and use your application on any Mac OS without installing OpenCV libraries.