Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

macdeployqt ends up with lots of lib clutter



  • Application requirements in .pro file

    equals(QT_MAJOR_VERSION, 5) {
    #5.8.0 and > ?
    QT += core gui
    QT += widgets

    win32 {
    #needed until the win7 qt is updated to 5.13
    ##win 5.8
    QT += webkit
    QT += webkitwidgets
    FRMBUYIT = frmBuyIt-w.ui
    }
    macx {
    #osx qt 5.13
    QT += webenginewidgets
    FRMBUYIT = frmBuyIt.ui
    }

    QT += printsupport
    QT += xml
    QT += network
    }

    Results of macdeployqt in Frameworks folder

    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtCore.framework
    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtDBus.framework
    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtGui.framework
    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtNetwork.framework
    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtPositioning.framework
    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtPrintSupport.framework
    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtQml.framework
    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtQuick.framework
    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtQuickWidgets.framework
    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtSerialPort.framework
    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtSvg.framework
    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtVirtualKeyboard.framework
    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtWebChannel.framework
    drwxr-xr-x 6 PSI staff 192 Jan 27 18:46 QtWebEngineCore.framework
    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtWebEngineWidgets.framework
    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtWidgets.framework
    drwxr-xr-x 5 PSI staff 160 Jan 27 18:46 QtXml.framework

    The items in BOLD aren't used that I know of.

    The reason this is a problem, is that when a release was made using Qt5.8.0 the App bundle size was ~70MB and now using Qt5.13 the App bundle size with the additional BOLD libs is ~210MB.

    Seems wrong.

    Nothing in the code changed going from 5.8 to 5.13. Just minor changes because of Qt deprecation of WebKit support for OSX.

    IDK. Just live with it or manually delete the Framework libs that I know the application does not use?


  • Lifetime Qt Champion

    Hi,

    One thing you can do is use otool to check the direct dependencies of your application and then the ones from the frameworks linked to your application.



  • Thx.

    This is the result...assume this is what you meant...

    SFA is the unix executable in the MacOS folder inside the app bundle.

    otool -L SFA
    SFA:
    @rpath/QtWebEngineWidgets.framework/Versions/5/QtWebEngineWidgets (compatibility version 5.13.0, current version 5.13.1)
    @rpath/QtWebEngineCore.framework/Versions/5/QtWebEngineCore (compatibility version 5.13.0, current version 5.13.1)
    @rpath/QtQuick.framework/Versions/5/QtQuick (compatibility version 5.13.0, current version 5.13.1)
    @rpath/QtPrintSupport.framework/Versions/5/QtPrintSupport (compatibility version 5.13.0, current version 5.13.1)
    @rpath/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.13.0, current version 5.13.1)
    @rpath/QtGui.framework/Versions/5/QtGui (compatibility version 5.13.0, current version 5.13.1)
    @rpath/QtWebChannel.framework/Versions/5/QtWebChannel (compatibility version 5.13.0, current version 5.13.1)
    @rpath/QtQml.framework/Versions/5/QtQml (compatibility version 5.13.0, current version 5.13.1)
    @rpath/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.13.0, current version 5.13.1)
    @rpath/QtPositioning.framework/Versions/5/QtPositioning (compatibility version 5.13.0, current version 5.13.1)
    @rpath/QtXml.framework/Versions/5/QtXml (compatibility version 5.13.0, current version 5.13.1)
    @rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.13.0, current version 5.13.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)
    /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.50.4)

    The only change from the Qt 5.8 to 5.13 build was the use of QWebEngine to replace QWebKit that was used in 5.8.

    My app does not use QtVirtualKeyBoard, QtPositioning, QtSerialPort, QML or QtQuick , so I assume it is the QWebEngine that does.

    Qt Creator 4.10.0
    Based on Qt 5.13.1 (Clang 10.0 (Apple), 64 bit)
    Built on Sep 4 2019 01:16:42

    Using the qmake in Creator to generate the LIBS list..I assume qmake does this based on the include files used in the app itself.

    IDK. I tried "renaming" framework folders in the app bundle to see if the app actually used the Qt Framework libraries placed there by macdeployqt. Not sure if this is an acceptable way to check library usage. Didn't work except for the QtVirtualKeyboard.


  • Lifetime Qt Champion

    Indeed, QtWebEngine has a lot of dependencies because of all the uses case it supports.

    You can check that using the same command on the QtWebEngine library contained in the corresponding framework.

    I just don't see why QtSerialPort.


Log in to reply