是否可以在 OS X 上部署没有 Qt Network 的 Qt Quick 应用程序?
Is it possible to deploy a Qt Quick application without Qt Network on OS X?
我有一个使用以下模块的 Qt Quick 应用程序
QT = core gui qml quick widgets \
core-private gui-private \
multimedia printsupport`
我部署在 OS X 上。现在我的主要二进制文件以及许多 Qt Qtick 插件显示对 Qt 网络的依赖。
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)
在以下插件中发现了对 Qt Network 的相同依赖
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
- 是否可以在没有 Qt Network 的情况下使用 Qt Quick?
- Qt 有模块依赖文档吗?
我不明白为什么Qt网络中的依赖被编译成我自己的二进制文件。
好吧,QtQml 依赖于 QtDeclarative 而依赖于 QtNetwork 所以我怀疑你能...
对于你来说,这里是 Qt Library Cross Dependencies
没有
证明
以下命令行脚本在 Linux 上生成 Qt5 模块的依赖列表:
# 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
这导致以下输出:
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
I don't get why the dependency in Qt Network is compiled into my own binary.
如果您使用 Qt 静态 link 程序,生成的可执行文件应该只包含调用的库例程的副本,而不是整个库。
你唯一的选择是reconfiguring and rebuilding Qt。
您可以自定义可用功能并在不违反许可的情况下摆脱很多东西。
我已经很长时间没有这样做了,所以我没有详细信息(我已经失去了 link 最好的指导,如果我找到它,我会告诉你)。我希望上面的文档就足够了。我相信您将能够通过 Google.
找到更好的说明
我有一个使用以下模块的 Qt Quick 应用程序
QT = core gui qml quick widgets \
core-private gui-private \
multimedia printsupport`
我部署在 OS X 上。现在我的主要二进制文件以及许多 Qt Qtick 插件显示对 Qt 网络的依赖。
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)
在以下插件中发现了对 Qt Network 的相同依赖
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
- 是否可以在没有 Qt Network 的情况下使用 Qt Quick?
- Qt 有模块依赖文档吗?
我不明白为什么Qt网络中的依赖被编译成我自己的二进制文件。
好吧,QtQml 依赖于 QtDeclarative 而依赖于 QtNetwork 所以我怀疑你能...
对于你来说,这里是 Qt Library Cross Dependencies
没有
证明
以下命令行脚本在 Linux 上生成 Qt5 模块的依赖列表:
# 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
这导致以下输出:
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
I don't get why the dependency in Qt Network is compiled into my own binary.
如果您使用 Qt 静态 link 程序,生成的可执行文件应该只包含调用的库例程的副本,而不是整个库。
你唯一的选择是reconfiguring and rebuilding Qt。
您可以自定义可用功能并在不违反许可的情况下摆脱很多东西。
我已经很长时间没有这样做了,所以我没有详细信息(我已经失去了 link 最好的指导,如果我找到它,我会告诉你)。我希望上面的文档就足够了。我相信您将能够通过 Google.
找到更好的说明