Mac OS Deployment - libqcoca.dylib



  • With moderate success, I have been trying to create a distributable app for MacOS of my application. I have used the explanation on http://doc.qt.io/qt-5/osx-deployment.html. I believe that I have finally managed to create an .app package with my libraries properly in place and with the correct references to other packages when I run the otool as described at this link (although, I still have to do the plugins). Nevertheless, the application crashes (even before deployment on any other Mac) when started and the report includes an interesting piece that I have put below. As far as I understand from this dump, there appears to be a dependence on a library called lib1coca.dylib.

    Libraries/QtXml
           0x10a6cd000 -        0x10a81bfff +libqcocoa.dylib (0) <C3142FD2-18F6-3B72-A20D-9C3CC2048576> /Users/USER/*/libqcocoa.dylib
           0x10a860000 -        0x10ac71ff7 +org.qt-project.QtGui (5.9 - 5.9.1) <425B6D3F-7724-348D-9827-43F97508414B> /Users/USER/*/QtGui.framework/Versions/5/QtGui
           0x10ad65000 -        0x10b23efff +org.qt-project.QtCore (5.9 - 5.9.1) <81B162CC-7629-337B-AC44-45B7ABD609B6> /Users/USER/*/QtCore.framework/Versions/5/QtCore
           0x10b2ee000 -        0x10b31afff +org.qt-project.QtPrintSupport (5.9 - 5.9.1) <0598E3BB-24DF-3BE8-B49D-27EE2F30DA42> /
    

    When I run the otool for te QtXml library, I do not see any reference to libqcoca.dylib and I also don't see it in the other Qt libraries that I have include (QtCore, QtXml, QtGui, QtWidgets):

    otool -L QtXml
    QtXml:
    	@executable_path/../Libraries/QtXml (compatibility version 5.9.0, current version 5.9.1)
    	@executable_path/../Libraries/QtCore (compatibility version 5.9.0, current version 5.9.1)
    	/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
    	/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
    	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
    	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
    

    I have two questions:

    • Where can I find the libqcoca.dylib in the Qt installation?
    • Does anyone have an idea what to do when I have found it?


  • Well, I found a solution, but this was far from obvious from the explanations on the Qt website...

    I have located the libqcocoa.dylib to be present in Qt/5.9.1/clang_64/lib/plugins/platforms and had to copy it to my.app/Contents/plugins/platforms and additionally modify the references to the Qt installed libraries to use the ones in my package (using the install_name_tool) and also have the QtPrintSupport plugin in my set of Qt libraries (next to QtCore, QtXml, QtGui and QtWidgets). A big puzzle but now that I have solved it. Next are to have my own plugins in the package...



  • Hmm, now I that I want my own dynamically loaded plugins to work, I do not know where to put them so that they are automatically loaded. They should be at the default location as I didn't change any setting or the like. So, what is this default location?? It is not Contents/MacOS/plugins, Contents/plugins/plugins and also not Contents/plugins. Any help is appreciated!



  • Qmake e Make its all....
    insert a script in your pro file
    sample..

    #!/bin/bash
    pwd
    echo Copying QT libraries...
    macdeployqt  Namemy.app
    

    in pro file:

    # bug 5.9  static lib not run PRE make a dummy ap to try if go tu run patch
    QMAKE_PRE_LINK += ./prebuild.sh
    QMAKE_POST_LINK += ./prebuild.sh
    

    before build or after
    or use a small hook app
    sample https://github.com/pehohlva/QCLD2/tree/master/hook

    In qt4 was a long way sample:
    https://raw.githubusercontent.com/pehohlva/xhtml_edit_qedit_base/master/mac_bundle/grep.sh

    In qt5 only on terminal:
    macdeployqt yourappname.app

    after bundle is ok..

    or
    macdeployqt yourappname.app -dmg

    and you have a ready zipped bundle ..
    macdeployqt take all plugin... used or not...



  • Have tried macdeployqt already several times, but:

    ~/Qt/5.9.1/clang_64/bin/macdeployqt dfm.app/
    ERROR: no file at "/usr/lib/libdfmcore.1.dylib"
    

    And this shows that it does not find my core library. Nethertheless, my .pro file has the following lines:

    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../build/core/release -ldfmcore
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../build/core/debug -ldfmcore
    else:unix:CONFIG(release, debug|release): LIBS += -L$$PWD/../build/release/core -ldfmcore
    else:unix:CONFIG(debug, debug|release): LIBS += -L$$PWD/../build/debug/core -ldfmcore
    

    The application runs perfectly fine from Qt Creator.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.