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 += widgetswin32 {
#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.frameworkThe 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?
-
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:42Using 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.
-
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.
-
T timday referenced this topic on