Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to deploy a Qt Quick application without Qt Network on OS X?

I have a Qt Quick application using the following modules

QT = core gui qml quick widgets \
    core-private gui-private \
    multimedia printsupport`

which I deploy on OS X. Now my main binary as well as a lot of Qt Qtick plugins show a dependency on Qt Network.

otool -L /path/to/My.app/Contents/MacOS/My

        /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 55471.14.18)
        /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1056.16.0)
        /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
        @executable_path/../Frameworks/QtQuick.framework/Versions/5/QtQuick (compatibility version 5.4.0, current version 5.4.2)
        @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui (compatibility version 5.4.0, current version 5.4.2)
        @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore (compatibility version 5.4.0, current version 5.4.2)
        /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)
        @executable_path/../Frameworks/QtQml.framework/Versions/5/QtQml (compatibility version 5.4.0, current version 5.4.2)
        /Users/me/Qt/5.4/clang_64/lib/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.4.0, current version 5.4.2)
        @executable_path/../Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport (compatibility version 5.4.0, current version 5.4.2)
        @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.4.0, current version 5.4.2)
        @executable_path/../Frameworks/QtMultimedia.framework/Versions/5/QtMultimedia (compatibility version 5.4.0, current version 5.4.2)
        /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 120.0.0)
        /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 855.17.0)

The same dependency on Qt Network is found in the following plugins

My.app/Contents/Frameworks/QtMultimedia.framework/Versions/5/QtMultimedia
My.app/Contents/Frameworks/QtMultimediaQuick_p.framework/Versions/5/QtMultimediaQuick_p
My.app/Contents/Frameworks/QtQml.framework/Versions/5/QtQml
My.app/Contents/Frameworks/QtQuick.framework/Versions/5/QtQuick
My.app/Contents/Plugins/audio/libqtaudio_coreaudio.dylib
My.app/Contents/Resources/qml/QtMultimedia/libdeclarative_multimedia.dylib
My.app/Contents/Resources/qml/QtQuick/Controls/libqtquickcontrolsplugin.dylib
My.app/Contents/Resources/qml/QtQuick/Dialogs/libdialogplugin.dylib
My.app/Contents/Resources/qml/QtQuick/Dialogs/Private/libdialogsprivateplugin.dylib
My.app/Contents/Resources/qml/QtQuick/Layouts/libqquicklayoutsplugin.dylib
My.app/Contents/Resources/qml/QtQuick/PrivateWidgets/libwidgetsplugin.dylib
My.app/Contents/Resources/qml/QtQuick/Window.2/libwindowplugin.dylib
My.app/Contents/Resources/qml/QtQuick.2/libqtquick2plugin.dylib
  1. Is it possible to use Qt Quick without Qt Network?
  2. Is there any module dependency documentation for Qt?

I don't get why the dependency in Qt Network is compiled into my own binary.

like image 411
Simon Warta Avatar asked Jun 10 '15 09:06

Simon Warta


People also ask

How do you use Qt fast?

For simple UI files such as this one, select File > New File or Project > Application (Qt Quick) > Qt Quick Application - Empty from within Qt Creator. Pressing the green Run button runs the application. You should see the text Hello, World! in the center of a red rectangle.

What is QML Mac?

QML is a user interface specification and programming language. It allows developers and designers alike to create highly performant, fluidly animated and visually appealing applications.


1 Answers

No.

Proof

The following command line script generates a dependency list of Qt5 modules on Linux:

# Run in e.g. Qt/5.4/gcc_64/lib
for f in libQt5*.so; do mod=$(basename "$f" .so | cut -c "7-"); echo "$mod"; ldd "$f" | grep "libQt5" | cut -f 1 -d">"  | tr -dc "a-zA-Z0-9.[:space:]" | cut -d"." -f 1 | sed 's/libQt5//g'; done

which results in the following output:

Bluetooth
    DBus
    Core
CLucene
    Core
Concurrent
    Core
Core
DBus
    Core
Declarative
    Widgets
    Gui
    Script
    Sql
    XmlPatterns
    Network
    Core
DesignerComponents
    Designer
    Widgets
    Gui
    Xml
    Core
Designer
    Widgets
    Gui
    Xml
    Core
Gui
    Core
Help
    Widgets
    Gui
    Core
    Network
    Sql
    CLucene
Location
    Positioning
    Quick
    Gui
    Core
    Qml
    Network
MultimediaQuick_p
    Quick
    Multimedia
    Gui
    Core
    Qml
    Network
Multimedia
    Network
    Gui
    Core
MultimediaWidgets
    Multimedia
    Widgets
    Gui
    Core
    OpenGL
    Network
Network
    Core
Nfc
    Core
OpenGL
    Widgets
    Gui
    Core
Positioning
    Core
PrintSupport
    Widgets
    Gui
    Core
Qml
    Network
    Core
QuickParticles
    Quick
    Gui
    Qml
    Core
    Network
Quick
    Gui
    Qml
    Network
    Core
QuickTest
    Widgets
    Gui
    Core
    Test
    Quick
    Qml
    Network
QuickWidgets
    Quick
    Widgets
    Gui
    Qml
    Core
    Network
Script
    Core
ScriptTools
    Core
    Widgets
    Gui
    Script
Sensors
    Core
SerialPort
    Core
Sql
    Core
Svg
    Widgets
    Gui
    Core
Test
    Core
WebChannel
    Qml
    Core
    Network
WebKit
    Sensors
    Core
    Positioning
    Quick
    Gui
    Qml
    Network
    WebChannel
    Sql
WebKitWidgets
    Widgets
    WebKit
    Gui
    Network
    Core
    Sensors
    PrintSupport
    OpenGL
    Positioning
    Quick
    Qml
    WebChannel
    Sql
WebSockets
    Network
    Core
Widgets
    Gui
    Core
X11Extras
    Gui
    Core
XmlPatterns
    Network
    Core
Xml
    Core
like image 115
Simon Warta Avatar answered Sep 19 '22 05:09

Simon Warta