To bundle a Mac OSX application dynamically linked with Qt, there is macdeployqt. To finish the job there is macdeployqtfix...
- find dependencies and rpathes of :
- the main executable of the bundle
- its dependencies
- the plugins present in the bundle
- copy into the bundle the missing QT libs on which depends those binaries, that should normally have been taken care of by macdeployqt
- fix incorrect permissions
- fix incorrect rpathes
macdeployqtfix relies on otool and install_name_tool being on the PATH
❗ Use macdeployqt first, then call macdeployqtfix
$ python macdeployqtfix.py -h usage: macdeployqtfix.py [-h] [-q] [-nl] [-v] exepath qtpath finish the job started by macdeployqt! - find dependencies/rpathes with otool - copy missed dependencies with cp and mkdir - fix missed rpathes with install_name_tool exit codes: - 0 : success - 1 : error positional arguments: exepath path to the binary depending on Qt qtpath path of Qt libraries used to build the Qt application optional arguments: -h, --help show this help message and exit -q, --quiet do not create log on standard output -nl, --no-log-file do not create log file './macdeployqtfix.log' -v, --verbose produce more log messages(debug log) For the following example environment:
- if your Qt application name is
APP - your bundle is located at
/path/to/bundle/ - the Qt libs used to build your app are located at
/usr/local/Cellar/qt5/5.5.0/ - then you should run :
python macdeployqtfix.py /path/to/bundle/Contents/MacOS/APP /usr/local/Cellar/qt5/5.5.0/