Qt 5.15.2 IOS: module "QtQuick.Shapes" is not installed
-
I have a QML project I've been developing using Qt 5.15.2 on MacOS, and it's working fine. I'm now trying to build an iOS version of the same project, and I've gotten through most of the work, but when I actually try to debug the app on the target (or simulator), I get the error "module "QtQuick.Shapes" is not installed".
I did some poking around and I do see an ios/qml/QtQuick/Shapes directory containing the plugin files in my qt tree. In the build dir, pedaleditor_qml_plugin_import.cpp does not mention the Shapes plugin, but mentions many others.
I'm not sure why it would work on the MacOS target and not the iOS target when it's the same code. The MacOS build uses dynamic linking and the iOS build uses static - that's the only difference I can think of. But, why is it that only Shapes has this problem? Everything else links fine and the app does run, except for my custom QML Control that depends on Shapes.
I did find this: https://codereview.qt-project.org/c/qt/qtdeclarative/+/266295 - but I verified that 5.15.2 has this change already.
Can anyone help point me in the right direction? Why is Shapes getting left out?
Here's my .pro file:
QT += quick svg CONFIG += c++11 sdk_no_version_check win32:QMAKE_CXXFLAGS += -mno-ms-bitfields macx: QMAKE_MAC_SDK = macosx12.1 ios: QMAKE_MAC_SDK = iphoneos15.2 QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.13 ios: QMAKE_IOS_DEPLOYMENT_TARGET = 12.0 ios: QMAKE_APPLE_TARGETED_DEVICE_FAMILY = 2 # You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 DEFINES += RJMEDITOR RTMIDI_DO_NOT_ENSURE_UNIQUE_PORTNAMES mac: DEFINES += __MACOSX_CORE__ ios: DEFINES += TARGET_OS_IPHONE win32: DEFINES += __WINDOWS_MM__ macx: QMAKE_INFO_PLIST = Info.plist ios: QMAKE_INFO_PLIST = ios/Info.plist macx: ICON = PedalEditor.icns win32: RC_FILE = PedalEditorIcon.rc INCLUDEPATH += ../PedalEditor/Firmware/Inc \ MIDI \ ../PedalCore \ ../PedalCore/Pedals mac: LIBS += -framework CoreMIDI -framework CoreAudio -framework CoreFoundation win32: LIBS += -lwinmm HEADERS += \ ../PedalCore/Pedals/SettingsHeader.h \ ../PedalCore/RJMSysex.h \ ../PedalCore/Pedals/OvertureSettings.h \ ../PedalCore/btea.h \ ../PedalCore/rjf_file.h \ MIDI/MIDI.h \ MIDI/MIDIConsts.h \ Pedals/overturedevice.h \ SettingsFile.h \ cclistmodel.h \ crc32.h \ firmwareupdate.h \ globals.h \ mididevice.h \ pedaldevice.h \ pedaldevicefactory.h \ pedaldevicelist.h \ presetlistmodel.h \ rtmidi/RtMidi.h \ settingssysex.h SOURCES += \ ../PedalCore/Pedals/OvertureSettings.cpp \ ../PedalCore/Pedals/OvertureDefaults.cpp \ ../PedalCore/btea.c \ MIDI/MIDI.cpp \ Pedals/overturedevice.cpp \ SettingsFile.cpp \ cclistmodel.cpp \ crc32.c \ firmwareupdate.cpp \ main.cpp \ mididevice.cpp \ pedaldevice.cpp \ pedaldevicelist.cpp \ presetlistmodel.cpp \ rtmidi/RtMidi.cpp \ settingssysex.cpp RESOURCES += qml.qrc macx: extraFiles.files = PedalEditorDoc.icns macx: extraFiles.path = Contents/Resources macx: QMAKE_BUNDLE_DATA = extraFiles ios: QMAKE_ASSET_CATALOGS = $$PWD/ios/Images.xcassets ios: QMAKE_ASSET_CATALOGS_APP_ICON = "AppIcon" ios: app_launch_screen.files = $$files($$PWD/ios/PedalEditorLaunchScreen.storyboard) ios: QMAKE_BUNDLE_DATA += app_launch_screen # Additional import path used to resolve QML modules in Qt Creator's code model QML_IMPORT_PATH = $QTDIR/qml # Additional import path used to resolve QML modules just for Qt Quick Designer QML_DESIGNER_IMPORT_PATH = # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target ios: DISTFILES += \ ios/PedalEditorLaunchScreen.storyboard DISTFILES +=
-
I have a QML project I've been developing using Qt 5.15.2 on MacOS, and it's working fine. I'm now trying to build an iOS version of the same project, and I've gotten through most of the work, but when I actually try to debug the app on the target (or simulator), I get the error "module "QtQuick.Shapes" is not installed".
I did some poking around and I do see an ios/qml/QtQuick/Shapes directory containing the plugin files in my qt tree. In the build dir, pedaleditor_qml_plugin_import.cpp does not mention the Shapes plugin, but mentions many others.
I'm not sure why it would work on the MacOS target and not the iOS target when it's the same code. The MacOS build uses dynamic linking and the iOS build uses static - that's the only difference I can think of. But, why is it that only Shapes has this problem? Everything else links fine and the app does run, except for my custom QML Control that depends on Shapes.
I did find this: https://codereview.qt-project.org/c/qt/qtdeclarative/+/266295 - but I verified that 5.15.2 has this change already.
Can anyone help point me in the right direction? Why is Shapes getting left out?
Here's my .pro file:
QT += quick svg CONFIG += c++11 sdk_no_version_check win32:QMAKE_CXXFLAGS += -mno-ms-bitfields macx: QMAKE_MAC_SDK = macosx12.1 ios: QMAKE_MAC_SDK = iphoneos15.2 QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.13 ios: QMAKE_IOS_DEPLOYMENT_TARGET = 12.0 ios: QMAKE_APPLE_TARGETED_DEVICE_FAMILY = 2 # You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 DEFINES += RJMEDITOR RTMIDI_DO_NOT_ENSURE_UNIQUE_PORTNAMES mac: DEFINES += __MACOSX_CORE__ ios: DEFINES += TARGET_OS_IPHONE win32: DEFINES += __WINDOWS_MM__ macx: QMAKE_INFO_PLIST = Info.plist ios: QMAKE_INFO_PLIST = ios/Info.plist macx: ICON = PedalEditor.icns win32: RC_FILE = PedalEditorIcon.rc INCLUDEPATH += ../PedalEditor/Firmware/Inc \ MIDI \ ../PedalCore \ ../PedalCore/Pedals mac: LIBS += -framework CoreMIDI -framework CoreAudio -framework CoreFoundation win32: LIBS += -lwinmm HEADERS += \ ../PedalCore/Pedals/SettingsHeader.h \ ../PedalCore/RJMSysex.h \ ../PedalCore/Pedals/OvertureSettings.h \ ../PedalCore/btea.h \ ../PedalCore/rjf_file.h \ MIDI/MIDI.h \ MIDI/MIDIConsts.h \ Pedals/overturedevice.h \ SettingsFile.h \ cclistmodel.h \ crc32.h \ firmwareupdate.h \ globals.h \ mididevice.h \ pedaldevice.h \ pedaldevicefactory.h \ pedaldevicelist.h \ presetlistmodel.h \ rtmidi/RtMidi.h \ settingssysex.h SOURCES += \ ../PedalCore/Pedals/OvertureSettings.cpp \ ../PedalCore/Pedals/OvertureDefaults.cpp \ ../PedalCore/btea.c \ MIDI/MIDI.cpp \ Pedals/overturedevice.cpp \ SettingsFile.cpp \ cclistmodel.cpp \ crc32.c \ firmwareupdate.cpp \ main.cpp \ mididevice.cpp \ pedaldevice.cpp \ pedaldevicelist.cpp \ presetlistmodel.cpp \ rtmidi/RtMidi.cpp \ settingssysex.cpp RESOURCES += qml.qrc macx: extraFiles.files = PedalEditorDoc.icns macx: extraFiles.path = Contents/Resources macx: QMAKE_BUNDLE_DATA = extraFiles ios: QMAKE_ASSET_CATALOGS = $$PWD/ios/Images.xcassets ios: QMAKE_ASSET_CATALOGS_APP_ICON = "AppIcon" ios: app_launch_screen.files = $$files($$PWD/ios/PedalEditorLaunchScreen.storyboard) ios: QMAKE_BUNDLE_DATA += app_launch_screen # Additional import path used to resolve QML modules in Qt Creator's code model QML_IMPORT_PATH = $QTDIR/qml # Additional import path used to resolve QML modules just for Qt Quick Designer QML_DESIGNER_IMPORT_PATH = # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target ios: DISTFILES += \ ios/PedalEditorLaunchScreen.storyboard DISTFILES +=
@rjmmusic said in Qt 5.15.2 IOS: module "QtQuick.Shapes" is not installed:
In the build dir, pedaleditor_qml_plugin_import.cpp does not mention the Shapes plugin, but mentions many others.
I'm not sure what's happening there. Run the
qmlimportscanner
tool on your project and see what the output says -
Ok, here it is:
[ { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.12" }, { "classname": "QtQuickControls2Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2", "plugin": "qtquickcontrols2plugin", "relativePath": "QtQuick/Controls.2", "type": "module", "version": "2.15" }, { "classname": "QtQuickLayoutsPlugin", "name": "QtQuick.Layouts", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Layouts", "plugin": "qquicklayoutsplugin", "relativePath": "QtQuick/Layouts", "type": "module", "version": "1.12" }, { "classname": "QtQmlModelsPlugin", "name": "QtQml.Models", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQml/Models.2", "plugin": "modelsplugin", "relativePath": "QtQml/Models.2", "type": "module", "version": "2.12" }, { "classname": "QtQmlPlugin", "name": "QtQml", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQml", "plugin": "qmlplugin", "relativePath": "QtQml", "type": "module", "version": "2.15" }, { "classname": "QtQuickTemplates2Plugin", "name": "QtQuick.Templates", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Templates.2", "plugin": "qtquicktemplates2plugin", "relativePath": "QtQuick/Templates.2", "type": "module", "version": "2.5" }, { "classname": "QtQmlModelsPlugin", "name": "QtQml.Models", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQml/Models.2", "plugin": "modelsplugin", "relativePath": "QtQml/Models.2", "type": "module", "version": "2.15" }, { "classname": "QtQmlWorkerScriptPlugin", "name": "QtQml.WorkerScript", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQml/WorkerScript.2", "plugin": "workerscriptplugin", "relativePath": "QtQml/WorkerScript.2", "type": "module", "version": "2.15" }, { "classname": "QtQuick2WindowPlugin", "name": "QtQuick.Window", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Window.2", "plugin": "windowplugin", "relativePath": "QtQuick/Window.2", "type": "module", "version": "2.2" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.9" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.0" }, { "classname": "QtQuick2WindowPlugin", "name": "QtQuick.Window", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Window.2", "plugin": "windowplugin", "relativePath": "QtQuick/Window.2", "type": "module", "version": "2.12" }, { "classname": "QtQuickControls2Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2", "plugin": "qtquickcontrols2plugin", "relativePath": "QtQuick/Controls.2", "type": "module", "version": "2.5" }, { "name": "PedalDevice", "type": "module", "version": "1.0" }, { "name": "SettingsSysex", "type": "module", "version": "1.0" }, { "name": "CCListModel", "type": "module", "version": "1.0" }, { "classname": "QtQuick2DialogsPlugin", "name": "QtQuick.Dialogs", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Dialogs", "plugin": "dialogplugin", "relativePath": "QtQuick/Dialogs", "type": "module", "version": "1.3" }, { "classname": "QmlSettingsPlugin", "name": "Qt.labs.settings", "path": "/Users/ron/Qt/5.15.2/ios/qml/Qt/labs/settings", "plugin": "qmlsettingsplugin", "relativePath": "Qt/labs/settings", "type": "module", "version": "1.0" }, { "name": "SettingsFile", "type": "module", "version": "1.0" }, { "classname": "QmlFolderListModelPlugin", "name": "Qt.labs.folderlistmodel", "path": "/Users/ron/Qt/5.15.2/ios/qml/Qt/labs/folderlistmodel", "plugin": "qmlfolderlistmodelplugin", "relativePath": "Qt/labs/folderlistmodel", "type": "module", "version": "1.0" }, { "classname": "QtQuick2DialogsPrivatePlugin", "name": "QtQuick.Dialogs.Private", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Dialogs/Private", "plugin": "dialogsprivateplugin", "relativePath": "QtQuick/Dialogs/Private", "type": "module", "version": "1.0" }, { "classname": "QtQuickControls1Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls", "plugin": "qtquickcontrolsplugin", "relativePath": "QtQuick/Controls", "type": "module", "version": "1.3" }, { "classname": "QtQuick2PrivateWidgetsPlugin", "name": "QtQuick.PrivateWidgets", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/PrivateWidgets", "plugin": "widgetsplugin", "relativePath": "QtQuick/PrivateWidgets", "type": "module", "version": "1.1" }, { "classname": "QtQmlPlugin", "name": "QtQml", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQml", "plugin": "qmlplugin", "relativePath": "QtQml", "type": "module", "version": "2.14" }, { "classname": "QtQuickLayoutsPlugin", "name": "QtQuick.Layouts", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Layouts", "plugin": "qquicklayoutsplugin", "relativePath": "QtQuick/Layouts", "type": "module", "version": "1.0" }, { "classname": "QmlShapesPlugin", "name": "QtQuick.Shapes", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Shapes", "plugin": "qmlshapesplugin", "relativePath": "QtQuick/Shapes", "type": "module", "version": "1.11" }, { "name": "PresetList", "type": "module", "version": "1.0" }, { "classname": "QmlFolderListModelPlugin", "name": "Qt.labs.folderlistmodel", "path": "/Users/ron/Qt/5.15.2/ios/qml/Qt/labs/folderlistmodel", "plugin": "qmlfolderlistmodelplugin", "relativePath": "Qt/labs/folderlistmodel", "type": "module", "version": "2.15" }, { "name": "QtQuick.Controls.Styles", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls/Styles", "relativePath": "QtQuick/Controls/Styles", "type": "module", "version": "1.4" }, { "classname": "QtGraphicalEffectsPrivatePlugin", "name": "QtGraphicalEffects.private", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtGraphicalEffects/private", "plugin": "qtgraphicaleffectsprivate", "relativePath": "QtGraphicalEffects/private", "type": "module", "version": "1.12" }, { "classname": "QtGraphicalEffectsPlugin", "name": "QtGraphicalEffects", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtGraphicalEffects", "plugin": "qtgraphicaleffectsplugin", "relativePath": "QtGraphicalEffects", "type": "module", "version": "1.12" }, { "classname": "QtGraphicalEffectsPrivatePlugin", "name": "QtGraphicalEffects/private", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtGraphicalEffects/private", "plugin": "qtgraphicaleffectsprivate", "relativePath": "QtGraphicalEffects/private", "type": "module", "version": "1.0" }, { "classname": "QtQuick2WindowPlugin", "name": "QtQuick.Window", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Window.2", "plugin": "windowplugin", "relativePath": "QtQuick/Window.2", "type": "module", "version": "2.1" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.2" }, { "classname": "QtQuickControls1Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls", "plugin": "qtquickcontrolsplugin", "relativePath": "QtQuick/Controls", "type": "module", "version": "1.2" }, { "name": "QtQuick.Controls.Private", "type": "module", "version": "1.0" }, { "classname": "QtQuickControls1Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls", "plugin": "qtquickcontrolsplugin", "relativePath": "QtQuick/Controls", "type": "module", "version": "1.5" }, { "name": "QtQuick.Controls.Styles", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls/Styles", "relativePath": "QtQuick/Controls/Styles", "type": "module", "version": "1.1" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.6" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.4" }, { "classname": "QtQuickControls1Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls", "plugin": "qtquickcontrolsplugin", "relativePath": "QtQuick/Controls", "type": "module", "version": "1.4" }, { "name": "QtQuick.Controls.Styles", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls/Styles", "relativePath": "QtQuick/Controls/Styles", "type": "module", "version": "1.2" }, { "classname": "QtQmlModelsPlugin", "name": "QtQml.Models", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQml/Models.2", "plugin": "modelsplugin", "relativePath": "QtQml/Models.2", "type": "module", "version": "2.2" }, { "name": "QtQuick.Controls.Styles", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls/Styles", "relativePath": "QtQuick/Controls/Styles", "type": "module", "version": "1.3" }, { "name": ".", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Controls/Styles/Desktop/ComboBoxStyle.qml", "type": "directory" }, { "name": ".", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Controls/Styles/Desktop/MenuBarStyle.qml", "type": "directory" }, { "name": ".", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Controls/Styles/Desktop/TableViewStyle.qml", "type": "directory" }, { "name": ".", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Controls/Styles/Desktop/TreeViewStyle.qml", "type": "directory" }, { "classname": "QtQuickLayoutsPlugin", "name": "QtQuick.Layouts", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Layouts", "plugin": "qquicklayoutsplugin", "relativePath": "QtQuick/Layouts", "type": "module", "version": "1.1" }, { "name": "QtQuick.Extras.Private", "type": "module", "version": "1.0" }, { "classname": "QtGraphicalEffectsPlugin", "name": "QtGraphicalEffects", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtGraphicalEffects", "plugin": "qtgraphicaleffectsplugin", "relativePath": "QtGraphicalEffects", "type": "module", "version": "1.0" }, { "classname": "QtQuickExtrasPlugin", "name": "QtQuick.Extras", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Extras", "plugin": "qtquickextrasplugin", "relativePath": "QtQuick/Extras", "type": "module", "version": "1.4" }, { "name": "QtQuick.Extras.Private.CppUtils", "type": "module", "version": "1.0" }, { "name": "QtQuick.Extras.Private.CppUtils", "type": "module", "version": "1.1" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.5" }, { "classname": "QtQuickTemplates2Plugin", "name": "QtQuick.Templates", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Templates.2", "plugin": "qtquicktemplates2plugin", "relativePath": "QtQuick/Templates.2", "type": "module", "version": "2.12" }, { "classname": "QtQuickControls2Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2", "plugin": "qtquickcontrols2plugin", "relativePath": "QtQuick/Controls.2", "type": "module", "version": "2.12" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.15" }, { "classname": "QtQuick2WindowPlugin", "name": "QtQuick.Window", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Window.2", "plugin": "windowplugin", "relativePath": "QtQuick/Window.2", "type": "module", "version": "2.15" }, { "classname": "QtQuickTemplates2Plugin", "name": "QtQuick.Templates", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Templates.2", "plugin": "qtquicktemplates2plugin", "relativePath": "QtQuick/Templates.2", "type": "module", "version": "2.15" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.13" }, { "classname": "QtQuickTemplates2Plugin", "name": "QtQuick.Templates", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Templates.2", "plugin": "qtquicktemplates2plugin", "relativePath": "QtQuick/Templates.2", "type": "module", "version": "2.13" }, { "classname": "QtQuickControls2Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2", "plugin": "qtquickcontrols2plugin", "relativePath": "QtQuick/Controls.2", "type": "module", "version": "2.13" }, { "classname": "QtQuickControls2FusionStylePlugin", "name": "QtQuick.Controls.Fusion", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Fusion", "plugin": "qtquickcontrols2fusionstyleplugin", "relativePath": "QtQuick/Controls.2/Fusion", "type": "module", "version": "2.12" }, { "classname": "QtQuickControls2FusionStylePlugin", "name": "QtQuick.Controls.Fusion", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Fusion", "plugin": "qtquickcontrols2fusionstyleplugin", "relativePath": "QtQuick/Controls.2/Fusion", "type": "module", "version": "2.15" }, { "classname": "QtQuickControls2FusionStylePlugin", "name": "QtQuick.Controls.Fusion", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Fusion", "plugin": "qtquickcontrols2fusionstyleplugin", "relativePath": "QtQuick/Controls.2/Fusion", "type": "module", "version": "2.13" }, { "classname": "QtQuickControls2UniversalStylePlugin", "name": "QtQuick.Controls.Universal", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Universal", "plugin": "qtquickcontrols2universalstyleplugin", "relativePath": "QtQuick/Controls.2/Universal", "type": "module", "version": "2.12" }, { "classname": "QtQuickControls2UniversalStylePlugin", "name": "QtQuick.Controls.Universal", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Universal", "plugin": "qtquickcontrols2universalstyleplugin", "relativePath": "QtQuick/Controls.2/Universal", "type": "module", "version": "2.15" }, { "classname": "QtQuickControls2UniversalStylePlugin", "name": "QtQuick.Controls.Universal", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Universal", "plugin": "qtquickcontrols2universalstyleplugin", "relativePath": "QtQuick/Controls.2/Universal", "type": "module", "version": "2.13" }, { "classname": "QtQuickControls2MaterialStylePlugin", "name": "QtQuick.Controls.Material", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Material", "plugin": "qtquickcontrols2materialstyleplugin", "relativePath": "QtQuick/Controls.2/Material", "type": "module", "version": "2.12" }, { "classname": "QtQuickControls2MaterialStylePlugin", "name": "QtQuick.Controls.Material", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Material", "plugin": "qtquickcontrols2materialstyleplugin", "relativePath": "QtQuick/Controls.2/Material", "type": "module", "version": "2.15" }, { "classname": "QtQuickControls2MaterialStylePlugin", "name": "QtQuick.Controls.Material", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Material", "plugin": "qtquickcontrols2materialstyleplugin", "relativePath": "QtQuick/Controls.2/Material", "type": "module", "version": "2.13" }, { "classname": "QtQuickControls2ImagineStylePlugin", "name": "QtQuick.Controls.Imagine", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Imagine", "plugin": "qtquickcontrols2imaginestyleplugin", "relativePath": "QtQuick/Controls.2/Imagine", "type": "module", "version": "2.12" }, { "classname": "QtQuickControls2ImagineStylePlugin", "name": "QtQuick.Controls.Imagine", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Imagine", "plugin": "qtquickcontrols2imaginestyleplugin", "relativePath": "QtQuick/Controls.2/Imagine", "type": "module", "version": "2.15" }, { "classname": "QtQuickControls2ImagineStylePlugin", "name": "QtQuick.Controls.Imagine", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Imagine", "plugin": "qtquickcontrols2imaginestyleplugin", "relativePath": "QtQuick/Controls.2/Imagine", "type": "module", "version": "2.13" }, { "classname": "QtQuick2DialogsPlugin", "name": "QtQuick.Dialogs", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Dialogs", "plugin": "dialogplugin", "relativePath": "QtQuick/Dialogs", "type": "module", "version": "1.0" }, { "name": "qml", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Dialogs/DefaultColorDialog.qml/qml", "type": "directory" }, { "classname": "QtQuick2DialogsPlugin", "name": "QtQuick.Dialogs", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Dialogs", "plugin": "dialogplugin", "relativePath": "QtQuick/Dialogs", "type": "module", "version": "1.2" }, { "name": "qml", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Dialogs/DefaultDialogWrapper.qml/qml", "type": "directory" }, { "classname": "QtQuick2DialogsPlugin", "name": "QtQuick.Dialogs", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Dialogs", "plugin": "dialogplugin", "relativePath": "QtQuick/Dialogs", "type": "module", "version": "1.1" }, { "classname": "QtQuick2DialogsPrivatePlugin", "name": "QtQuick.Dialogs.Private", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Dialogs/Private", "plugin": "dialogsprivateplugin", "relativePath": "QtQuick/Dialogs/Private", "type": "module", "version": "1.1" }, { "classname": "QmlFolderListModelPlugin", "name": "Qt.labs.folderlistmodel", "path": "/Users/ron/Qt/5.15.2/ios/qml/Qt/labs/folderlistmodel", "plugin": "qmlfolderlistmodelplugin", "relativePath": "Qt/labs/folderlistmodel", "type": "module", "version": "2.1" }, { "name": "qml", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Dialogs/DefaultFileDialog.qml/qml", "type": "directory" }, { "name": "QtQuick.Controls.Styles", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls/Styles", "relativePath": "QtQuick/Controls/Styles", "type": "module", "version": "1.0" }, { "name": "qml", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Dialogs/DefaultFontDialog.qml/qml", "type": "directory" }, { "name": "qml", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Dialogs/DefaultMessageDialog.qml/qml", "type": "directory" }, { "classname": "QtQuick2PrivateWidgetsPlugin", "name": "QtQuick.PrivateWidgets", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/PrivateWidgets", "plugin": "widgetsplugin", "relativePath": "QtQuick/PrivateWidgets", "type": "module", "version": "1.0" }, { "classname": "QtQuickControls1Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls", "plugin": "qtquickcontrolsplugin", "relativePath": "QtQuick/Controls", "type": "module", "version": "1.1" }, { "name": "QtQuick.Extras.Private", "type": "module", "version": "1.1" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.3" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.1" } ]
-
Ok, here it is:
[ { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.12" }, { "classname": "QtQuickControls2Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2", "plugin": "qtquickcontrols2plugin", "relativePath": "QtQuick/Controls.2", "type": "module", "version": "2.15" }, { "classname": "QtQuickLayoutsPlugin", "name": "QtQuick.Layouts", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Layouts", "plugin": "qquicklayoutsplugin", "relativePath": "QtQuick/Layouts", "type": "module", "version": "1.12" }, { "classname": "QtQmlModelsPlugin", "name": "QtQml.Models", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQml/Models.2", "plugin": "modelsplugin", "relativePath": "QtQml/Models.2", "type": "module", "version": "2.12" }, { "classname": "QtQmlPlugin", "name": "QtQml", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQml", "plugin": "qmlplugin", "relativePath": "QtQml", "type": "module", "version": "2.15" }, { "classname": "QtQuickTemplates2Plugin", "name": "QtQuick.Templates", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Templates.2", "plugin": "qtquicktemplates2plugin", "relativePath": "QtQuick/Templates.2", "type": "module", "version": "2.5" }, { "classname": "QtQmlModelsPlugin", "name": "QtQml.Models", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQml/Models.2", "plugin": "modelsplugin", "relativePath": "QtQml/Models.2", "type": "module", "version": "2.15" }, { "classname": "QtQmlWorkerScriptPlugin", "name": "QtQml.WorkerScript", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQml/WorkerScript.2", "plugin": "workerscriptplugin", "relativePath": "QtQml/WorkerScript.2", "type": "module", "version": "2.15" }, { "classname": "QtQuick2WindowPlugin", "name": "QtQuick.Window", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Window.2", "plugin": "windowplugin", "relativePath": "QtQuick/Window.2", "type": "module", "version": "2.2" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.9" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.0" }, { "classname": "QtQuick2WindowPlugin", "name": "QtQuick.Window", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Window.2", "plugin": "windowplugin", "relativePath": "QtQuick/Window.2", "type": "module", "version": "2.12" }, { "classname": "QtQuickControls2Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2", "plugin": "qtquickcontrols2plugin", "relativePath": "QtQuick/Controls.2", "type": "module", "version": "2.5" }, { "name": "PedalDevice", "type": "module", "version": "1.0" }, { "name": "SettingsSysex", "type": "module", "version": "1.0" }, { "name": "CCListModel", "type": "module", "version": "1.0" }, { "classname": "QtQuick2DialogsPlugin", "name": "QtQuick.Dialogs", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Dialogs", "plugin": "dialogplugin", "relativePath": "QtQuick/Dialogs", "type": "module", "version": "1.3" }, { "classname": "QmlSettingsPlugin", "name": "Qt.labs.settings", "path": "/Users/ron/Qt/5.15.2/ios/qml/Qt/labs/settings", "plugin": "qmlsettingsplugin", "relativePath": "Qt/labs/settings", "type": "module", "version": "1.0" }, { "name": "SettingsFile", "type": "module", "version": "1.0" }, { "classname": "QmlFolderListModelPlugin", "name": "Qt.labs.folderlistmodel", "path": "/Users/ron/Qt/5.15.2/ios/qml/Qt/labs/folderlistmodel", "plugin": "qmlfolderlistmodelplugin", "relativePath": "Qt/labs/folderlistmodel", "type": "module", "version": "1.0" }, { "classname": "QtQuick2DialogsPrivatePlugin", "name": "QtQuick.Dialogs.Private", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Dialogs/Private", "plugin": "dialogsprivateplugin", "relativePath": "QtQuick/Dialogs/Private", "type": "module", "version": "1.0" }, { "classname": "QtQuickControls1Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls", "plugin": "qtquickcontrolsplugin", "relativePath": "QtQuick/Controls", "type": "module", "version": "1.3" }, { "classname": "QtQuick2PrivateWidgetsPlugin", "name": "QtQuick.PrivateWidgets", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/PrivateWidgets", "plugin": "widgetsplugin", "relativePath": "QtQuick/PrivateWidgets", "type": "module", "version": "1.1" }, { "classname": "QtQmlPlugin", "name": "QtQml", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQml", "plugin": "qmlplugin", "relativePath": "QtQml", "type": "module", "version": "2.14" }, { "classname": "QtQuickLayoutsPlugin", "name": "QtQuick.Layouts", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Layouts", "plugin": "qquicklayoutsplugin", "relativePath": "QtQuick/Layouts", "type": "module", "version": "1.0" }, { "classname": "QmlShapesPlugin", "name": "QtQuick.Shapes", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Shapes", "plugin": "qmlshapesplugin", "relativePath": "QtQuick/Shapes", "type": "module", "version": "1.11" }, { "name": "PresetList", "type": "module", "version": "1.0" }, { "classname": "QmlFolderListModelPlugin", "name": "Qt.labs.folderlistmodel", "path": "/Users/ron/Qt/5.15.2/ios/qml/Qt/labs/folderlistmodel", "plugin": "qmlfolderlistmodelplugin", "relativePath": "Qt/labs/folderlistmodel", "type": "module", "version": "2.15" }, { "name": "QtQuick.Controls.Styles", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls/Styles", "relativePath": "QtQuick/Controls/Styles", "type": "module", "version": "1.4" }, { "classname": "QtGraphicalEffectsPrivatePlugin", "name": "QtGraphicalEffects.private", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtGraphicalEffects/private", "plugin": "qtgraphicaleffectsprivate", "relativePath": "QtGraphicalEffects/private", "type": "module", "version": "1.12" }, { "classname": "QtGraphicalEffectsPlugin", "name": "QtGraphicalEffects", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtGraphicalEffects", "plugin": "qtgraphicaleffectsplugin", "relativePath": "QtGraphicalEffects", "type": "module", "version": "1.12" }, { "classname": "QtGraphicalEffectsPrivatePlugin", "name": "QtGraphicalEffects/private", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtGraphicalEffects/private", "plugin": "qtgraphicaleffectsprivate", "relativePath": "QtGraphicalEffects/private", "type": "module", "version": "1.0" }, { "classname": "QtQuick2WindowPlugin", "name": "QtQuick.Window", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Window.2", "plugin": "windowplugin", "relativePath": "QtQuick/Window.2", "type": "module", "version": "2.1" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.2" }, { "classname": "QtQuickControls1Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls", "plugin": "qtquickcontrolsplugin", "relativePath": "QtQuick/Controls", "type": "module", "version": "1.2" }, { "name": "QtQuick.Controls.Private", "type": "module", "version": "1.0" }, { "classname": "QtQuickControls1Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls", "plugin": "qtquickcontrolsplugin", "relativePath": "QtQuick/Controls", "type": "module", "version": "1.5" }, { "name": "QtQuick.Controls.Styles", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls/Styles", "relativePath": "QtQuick/Controls/Styles", "type": "module", "version": "1.1" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.6" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.4" }, { "classname": "QtQuickControls1Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls", "plugin": "qtquickcontrolsplugin", "relativePath": "QtQuick/Controls", "type": "module", "version": "1.4" }, { "name": "QtQuick.Controls.Styles", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls/Styles", "relativePath": "QtQuick/Controls/Styles", "type": "module", "version": "1.2" }, { "classname": "QtQmlModelsPlugin", "name": "QtQml.Models", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQml/Models.2", "plugin": "modelsplugin", "relativePath": "QtQml/Models.2", "type": "module", "version": "2.2" }, { "name": "QtQuick.Controls.Styles", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls/Styles", "relativePath": "QtQuick/Controls/Styles", "type": "module", "version": "1.3" }, { "name": ".", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Controls/Styles/Desktop/ComboBoxStyle.qml", "type": "directory" }, { "name": ".", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Controls/Styles/Desktop/MenuBarStyle.qml", "type": "directory" }, { "name": ".", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Controls/Styles/Desktop/TableViewStyle.qml", "type": "directory" }, { "name": ".", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Controls/Styles/Desktop/TreeViewStyle.qml", "type": "directory" }, { "classname": "QtQuickLayoutsPlugin", "name": "QtQuick.Layouts", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Layouts", "plugin": "qquicklayoutsplugin", "relativePath": "QtQuick/Layouts", "type": "module", "version": "1.1" }, { "name": "QtQuick.Extras.Private", "type": "module", "version": "1.0" }, { "classname": "QtGraphicalEffectsPlugin", "name": "QtGraphicalEffects", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtGraphicalEffects", "plugin": "qtgraphicaleffectsplugin", "relativePath": "QtGraphicalEffects", "type": "module", "version": "1.0" }, { "classname": "QtQuickExtrasPlugin", "name": "QtQuick.Extras", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Extras", "plugin": "qtquickextrasplugin", "relativePath": "QtQuick/Extras", "type": "module", "version": "1.4" }, { "name": "QtQuick.Extras.Private.CppUtils", "type": "module", "version": "1.0" }, { "name": "QtQuick.Extras.Private.CppUtils", "type": "module", "version": "1.1" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.5" }, { "classname": "QtQuickTemplates2Plugin", "name": "QtQuick.Templates", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Templates.2", "plugin": "qtquicktemplates2plugin", "relativePath": "QtQuick/Templates.2", "type": "module", "version": "2.12" }, { "classname": "QtQuickControls2Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2", "plugin": "qtquickcontrols2plugin", "relativePath": "QtQuick/Controls.2", "type": "module", "version": "2.12" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.15" }, { "classname": "QtQuick2WindowPlugin", "name": "QtQuick.Window", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Window.2", "plugin": "windowplugin", "relativePath": "QtQuick/Window.2", "type": "module", "version": "2.15" }, { "classname": "QtQuickTemplates2Plugin", "name": "QtQuick.Templates", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Templates.2", "plugin": "qtquicktemplates2plugin", "relativePath": "QtQuick/Templates.2", "type": "module", "version": "2.15" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.13" }, { "classname": "QtQuickTemplates2Plugin", "name": "QtQuick.Templates", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Templates.2", "plugin": "qtquicktemplates2plugin", "relativePath": "QtQuick/Templates.2", "type": "module", "version": "2.13" }, { "classname": "QtQuickControls2Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2", "plugin": "qtquickcontrols2plugin", "relativePath": "QtQuick/Controls.2", "type": "module", "version": "2.13" }, { "classname": "QtQuickControls2FusionStylePlugin", "name": "QtQuick.Controls.Fusion", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Fusion", "plugin": "qtquickcontrols2fusionstyleplugin", "relativePath": "QtQuick/Controls.2/Fusion", "type": "module", "version": "2.12" }, { "classname": "QtQuickControls2FusionStylePlugin", "name": "QtQuick.Controls.Fusion", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Fusion", "plugin": "qtquickcontrols2fusionstyleplugin", "relativePath": "QtQuick/Controls.2/Fusion", "type": "module", "version": "2.15" }, { "classname": "QtQuickControls2FusionStylePlugin", "name": "QtQuick.Controls.Fusion", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Fusion", "plugin": "qtquickcontrols2fusionstyleplugin", "relativePath": "QtQuick/Controls.2/Fusion", "type": "module", "version": "2.13" }, { "classname": "QtQuickControls2UniversalStylePlugin", "name": "QtQuick.Controls.Universal", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Universal", "plugin": "qtquickcontrols2universalstyleplugin", "relativePath": "QtQuick/Controls.2/Universal", "type": "module", "version": "2.12" }, { "classname": "QtQuickControls2UniversalStylePlugin", "name": "QtQuick.Controls.Universal", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Universal", "plugin": "qtquickcontrols2universalstyleplugin", "relativePath": "QtQuick/Controls.2/Universal", "type": "module", "version": "2.15" }, { "classname": "QtQuickControls2UniversalStylePlugin", "name": "QtQuick.Controls.Universal", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Universal", "plugin": "qtquickcontrols2universalstyleplugin", "relativePath": "QtQuick/Controls.2/Universal", "type": "module", "version": "2.13" }, { "classname": "QtQuickControls2MaterialStylePlugin", "name": "QtQuick.Controls.Material", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Material", "plugin": "qtquickcontrols2materialstyleplugin", "relativePath": "QtQuick/Controls.2/Material", "type": "module", "version": "2.12" }, { "classname": "QtQuickControls2MaterialStylePlugin", "name": "QtQuick.Controls.Material", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Material", "plugin": "qtquickcontrols2materialstyleplugin", "relativePath": "QtQuick/Controls.2/Material", "type": "module", "version": "2.15" }, { "classname": "QtQuickControls2MaterialStylePlugin", "name": "QtQuick.Controls.Material", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Material", "plugin": "qtquickcontrols2materialstyleplugin", "relativePath": "QtQuick/Controls.2/Material", "type": "module", "version": "2.13" }, { "classname": "QtQuickControls2ImagineStylePlugin", "name": "QtQuick.Controls.Imagine", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Imagine", "plugin": "qtquickcontrols2imaginestyleplugin", "relativePath": "QtQuick/Controls.2/Imagine", "type": "module", "version": "2.12" }, { "classname": "QtQuickControls2ImagineStylePlugin", "name": "QtQuick.Controls.Imagine", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Imagine", "plugin": "qtquickcontrols2imaginestyleplugin", "relativePath": "QtQuick/Controls.2/Imagine", "type": "module", "version": "2.15" }, { "classname": "QtQuickControls2ImagineStylePlugin", "name": "QtQuick.Controls.Imagine", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls.2/Imagine", "plugin": "qtquickcontrols2imaginestyleplugin", "relativePath": "QtQuick/Controls.2/Imagine", "type": "module", "version": "2.13" }, { "classname": "QtQuick2DialogsPlugin", "name": "QtQuick.Dialogs", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Dialogs", "plugin": "dialogplugin", "relativePath": "QtQuick/Dialogs", "type": "module", "version": "1.0" }, { "name": "qml", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Dialogs/DefaultColorDialog.qml/qml", "type": "directory" }, { "classname": "QtQuick2DialogsPlugin", "name": "QtQuick.Dialogs", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Dialogs", "plugin": "dialogplugin", "relativePath": "QtQuick/Dialogs", "type": "module", "version": "1.2" }, { "name": "qml", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Dialogs/DefaultDialogWrapper.qml/qml", "type": "directory" }, { "classname": "QtQuick2DialogsPlugin", "name": "QtQuick.Dialogs", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Dialogs", "plugin": "dialogplugin", "relativePath": "QtQuick/Dialogs", "type": "module", "version": "1.1" }, { "classname": "QtQuick2DialogsPrivatePlugin", "name": "QtQuick.Dialogs.Private", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Dialogs/Private", "plugin": "dialogsprivateplugin", "relativePath": "QtQuick/Dialogs/Private", "type": "module", "version": "1.1" }, { "classname": "QmlFolderListModelPlugin", "name": "Qt.labs.folderlistmodel", "path": "/Users/ron/Qt/5.15.2/ios/qml/Qt/labs/folderlistmodel", "plugin": "qmlfolderlistmodelplugin", "relativePath": "Qt/labs/folderlistmodel", "type": "module", "version": "2.1" }, { "name": "qml", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Dialogs/DefaultFileDialog.qml/qml", "type": "directory" }, { "name": "QtQuick.Controls.Styles", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls/Styles", "relativePath": "QtQuick/Controls/Styles", "type": "module", "version": "1.0" }, { "name": "qml", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Dialogs/DefaultFontDialog.qml/qml", "type": "directory" }, { "name": "qml", "path": "/Users/ron/Work/PedalEditor/WindowsDistrib/QtQuick/Dialogs/DefaultMessageDialog.qml/qml", "type": "directory" }, { "classname": "QtQuick2PrivateWidgetsPlugin", "name": "QtQuick.PrivateWidgets", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/PrivateWidgets", "plugin": "widgetsplugin", "relativePath": "QtQuick/PrivateWidgets", "type": "module", "version": "1.0" }, { "classname": "QtQuickControls1Plugin", "name": "QtQuick.Controls", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Controls", "plugin": "qtquickcontrolsplugin", "relativePath": "QtQuick/Controls", "type": "module", "version": "1.1" }, { "name": "QtQuick.Extras.Private", "type": "module", "version": "1.1" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.3" }, { "classname": "QtQuick2Plugin", "name": "QtQuick", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick.2", "plugin": "qtquick2plugin", "relativePath": "QtQuick.2", "type": "module", "version": "2.1" } ]
-
I have a QML project I've been developing using Qt 5.15.2 on MacOS, and it's working fine. I'm now trying to build an iOS version of the same project, and I've gotten through most of the work, but when I actually try to debug the app on the target (or simulator), I get the error "module "QtQuick.Shapes" is not installed".
I did some poking around and I do see an ios/qml/QtQuick/Shapes directory containing the plugin files in my qt tree. In the build dir, pedaleditor_qml_plugin_import.cpp does not mention the Shapes plugin, but mentions many others.
I'm not sure why it would work on the MacOS target and not the iOS target when it's the same code. The MacOS build uses dynamic linking and the iOS build uses static - that's the only difference I can think of. But, why is it that only Shapes has this problem? Everything else links fine and the app does run, except for my custom QML Control that depends on Shapes.
I did find this: https://codereview.qt-project.org/c/qt/qtdeclarative/+/266295 - but I verified that 5.15.2 has this change already.
Can anyone help point me in the right direction? Why is Shapes getting left out?
Here's my .pro file:
QT += quick svg CONFIG += c++11 sdk_no_version_check win32:QMAKE_CXXFLAGS += -mno-ms-bitfields macx: QMAKE_MAC_SDK = macosx12.1 ios: QMAKE_MAC_SDK = iphoneos15.2 QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.13 ios: QMAKE_IOS_DEPLOYMENT_TARGET = 12.0 ios: QMAKE_APPLE_TARGETED_DEVICE_FAMILY = 2 # You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 DEFINES += RJMEDITOR RTMIDI_DO_NOT_ENSURE_UNIQUE_PORTNAMES mac: DEFINES += __MACOSX_CORE__ ios: DEFINES += TARGET_OS_IPHONE win32: DEFINES += __WINDOWS_MM__ macx: QMAKE_INFO_PLIST = Info.plist ios: QMAKE_INFO_PLIST = ios/Info.plist macx: ICON = PedalEditor.icns win32: RC_FILE = PedalEditorIcon.rc INCLUDEPATH += ../PedalEditor/Firmware/Inc \ MIDI \ ../PedalCore \ ../PedalCore/Pedals mac: LIBS += -framework CoreMIDI -framework CoreAudio -framework CoreFoundation win32: LIBS += -lwinmm HEADERS += \ ../PedalCore/Pedals/SettingsHeader.h \ ../PedalCore/RJMSysex.h \ ../PedalCore/Pedals/OvertureSettings.h \ ../PedalCore/btea.h \ ../PedalCore/rjf_file.h \ MIDI/MIDI.h \ MIDI/MIDIConsts.h \ Pedals/overturedevice.h \ SettingsFile.h \ cclistmodel.h \ crc32.h \ firmwareupdate.h \ globals.h \ mididevice.h \ pedaldevice.h \ pedaldevicefactory.h \ pedaldevicelist.h \ presetlistmodel.h \ rtmidi/RtMidi.h \ settingssysex.h SOURCES += \ ../PedalCore/Pedals/OvertureSettings.cpp \ ../PedalCore/Pedals/OvertureDefaults.cpp \ ../PedalCore/btea.c \ MIDI/MIDI.cpp \ Pedals/overturedevice.cpp \ SettingsFile.cpp \ cclistmodel.cpp \ crc32.c \ firmwareupdate.cpp \ main.cpp \ mididevice.cpp \ pedaldevice.cpp \ pedaldevicelist.cpp \ presetlistmodel.cpp \ rtmidi/RtMidi.cpp \ settingssysex.cpp RESOURCES += qml.qrc macx: extraFiles.files = PedalEditorDoc.icns macx: extraFiles.path = Contents/Resources macx: QMAKE_BUNDLE_DATA = extraFiles ios: QMAKE_ASSET_CATALOGS = $$PWD/ios/Images.xcassets ios: QMAKE_ASSET_CATALOGS_APP_ICON = "AppIcon" ios: app_launch_screen.files = $$files($$PWD/ios/PedalEditorLaunchScreen.storyboard) ios: QMAKE_BUNDLE_DATA += app_launch_screen # Additional import path used to resolve QML modules in Qt Creator's code model QML_IMPORT_PATH = $QTDIR/qml # Additional import path used to resolve QML modules just for Qt Quick Designer QML_DESIGNER_IMPORT_PATH = # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target ios: DISTFILES += \ ios/PedalEditorLaunchScreen.storyboard DISTFILES +=
@rjmmusic said in Qt 5.15.2 IOS: module "QtQuick.Shapes" is not installed:
Ok, here it is:
[ ... { "classname": "QmlShapesPlugin", "name": "QtQuick.Shapes", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Shapes", "plugin": "qmlshapesplugin", "relativePath": "QtQuick/Shapes", "type": "module", "version": "1.11" }, ... ]
That's weird. Shapes is definitely detected as a dependency.
I'm not sure why it would work on the MacOS target and not the iOS target when it's the same code.
If you set the environment variable, QML_IMPORT_TRACE=1 before running your macOS app, you can see where it loads the QML modules from.
-
@rjmmusic said in Qt 5.15.2 IOS: module "QtQuick.Shapes" is not installed:
Ok, here it is:
[ ... { "classname": "QmlShapesPlugin", "name": "QtQuick.Shapes", "path": "/Users/ron/Qt/5.15.2/ios/qml/QtQuick/Shapes", "plugin": "qmlshapesplugin", "relativePath": "QtQuick/Shapes", "type": "module", "version": "1.11" }, ... ]
That's weird. Shapes is definitely detected as a dependency.
I'm not sure why it would work on the MacOS target and not the iOS target when it's the same code.
If you set the environment variable, QML_IMPORT_TRACE=1 before running your macOS app, you can see where it loads the QML modules from.