Unknown module(s) in QT: quick qml
-
Have you skipped any modules (QtQuick1, QtScript, QtSvg, maybe QtWebKit)? For unknown (to me) reasons, that sometimes causes QtQuick 2 not to be build.
-
I don't believe I did.
Is there a log of the build results somewhere? I did an out-of-tree build and cannot find one. It would be nice to know if an error had occured during the build, although I assume there were no errors since there was no message at the end of the build...
I did specifically turn off glib support with "-no-glib", because configure would not complete without that option. From what I read around the 'net, glib doesn't seem like a requirement to get Quick working.
Here is the configure command line I used, as well as the qmake.conf from the device directory:
@./configure -debug -opengl es2 -device linux-am335x-g++ -device-option CROSS_COMPILE=/home/steve/ti-sdk-am335x-evm-07.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/bin/arm-linux-gnueabihf- -sysroot /home/steve/ti-sdk-am335x-evm-07.00.00.00/linux-devkit/sysroots/cortexa8hf-vfp-neon-3.8-oe-linux-gnueabi -prefix /home/steve/ti-sdk-am335x-evm-07.00.00.00/targetNFS -no-glib
@Here is the qmake.conf:
@MAKEFILE_GENERATOR = UNIX
CONFIG += incremental gdb_dwarf_index
QMAKE_INCREMENTAL_STYLE = sublibinclude(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)load(device_config)
QT_QPA_DEFAULT_PLATFORM = eglfs
modifications to g++.conf
QMAKE_CC = $${CROSS_COMPILE}gcc
QMAKE_CXX = $${CROSS_COMPILE}g++
QMAKE_LINK = $${QMAKE_CXX}
QMAKE_LINK_SHLIB = $${QMAKE_CXX}modifications to linux.conf
QMAKE_AR = $${CROSS_COMPILE}ar cqs
QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy
QMAKE_NM = $${CROSS_COMPILE}nm -P
QMAKE_STRIP = $${CROSS_COMPILE}stripCOMPILER_FLAGS = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard
#modifications to gcc-base.conf
QMAKE_CFLAGS += $${COMPILER_FLAGS}
QMAKE_CXXFLAGS += $${COMPILER_FLAGS}
QMAKE_CXXFLAGS_RELEASE += -O3QMAKE_LIBS += -lrt -lpthread -ldl
Extra stuff (OpenGL, DirectFB, ...)
QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/usr/include
QMAKE_LIBDIR_EGL = $$[QT_SYSROOT]/usr/lib
QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL}
QMAKE_LIBDIR_OPENGL_ES2 = $${QMAKE_LIBDIR_EGL}
QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL}
QMAKE_LIBDIR_OPENVG = $${QMAKE_LIBDIR_EGL}QMAKE_LIBS_EGL = -lEGL -lIMGegl -lsrv_um
QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL}
QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL}Sanity check
deviceSanityCheckCompiler()
load(qt_config)
@ -
Hm, that looks correct. I do not know how to help, sorry. I guess something has failed along the way, maybe the modules were compiled but not installed properly.
-
[quote author="mib383" date="1402037969"]I solved the same problem on windows.
Problem occured when i started config and then make from qbase folder.
When i started it from Src folder - problem dissapeared.[/quote]Yes, you are supposed to build from the root folder, not qtbase. -
In my situation I did build from the root folder, and performed the build out-of-tree. I created a directory, and called configure from that directory, did the make and make install.
It does turn out to be an installation problem - the libraries were actually built. For example, I found ./qtdeclarative/lib/libQt5Qml.so in my build tree.
When I go to Options | Build & Run, on the Qt Versions tab, I've added the qmake that is in my build directory, but there is a warning "Non-installed -prefix build - for internal development only." What is this warning?
Also, when during the build is it trying to find the quick and QML libraries? It's not looking on the target as far as I can tell, so what is telling Creator that these libraries exist (or don't)?
-
Out-of-source prefixed builds are not working very well when cross-compiling. I recommend doing in-source builds when compiling for ARM and Android.
-
Ok, so I reconfigured and re-built using a fresh source tree, and I configured, make, make install from that source tree. This time I'm pretty sure I got everything installed properly: I added the -extprefix option to configure, which appears to be the real cause of the missing libraries.
However, I'm still having the same problem from Creator. The quick and qml libraries are definitely on my target. I've updated my kit to point to the appropriate things, but I still get "unknown module(s) in QT: quick qml", and I still get the yellow "!" on the Qt Versions tab when setting up the kit, with the message "non-installed -prefix build - for internal development only".
Any further suggestions? It seems like the "non-installed -prefix build" is probably the error I need fixed next, I believe.
For the record, here is my new configure command line:
@./configure -debug -opengl es2 -device linux-am335x-g++ -device-option CROSS_COMPILE=/home/steve/ti-sdk-am335x-evm-07.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/bin/arm-linux-gnueabihf- -sysroot /home/steve/ti-sdk-am335x-evm-07.00.00.00/linux-devkit/sysroots/cortexa8hf-vfp-neon-3.8-oe-linux-gnueabi -prefix /home/steve/ti-sdk-am335x-evm-07.00.00.00/targetNFS -extprefix /home/steve/ti-sdk-am335x-evm-07.00.00.00/targetNFS -no-glib -qpa eglfs -opensource -confirm-license@
-
Please pay close attention what the configure says when it's finishing: maybe you should not be running "make install" at all.
-
I have to, though - somehow the necessary files need to get into my target filesystem. I did re-run configure to find the message you're talking about (I've seen it, but I can't remember the details), but that message did not appear. Also, I don't think I fit into the category of "must not run make install".
Here are the messages printed at the end of configure:
NOTE: Qt is using double for qreal on this system. This is binary incompatible against Qt 5.1.
Configure with '-qreal float' to create a build that is binary compatible with 5.1.Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into /home/steve/ti-sdk-am335x-evm-07.00.00.00/targetNFS -
Yeah, you are right. Weird :)
-
Perhaps this might shed some light? I'm not sure though...
When setting up the Qt Version in the Options dialog, the paths for Qt are displayed like the image below. It appears most of these paths points to spots in the Qt source tree, not to where the actual installation is.
My installation should go to /home/steve/ti-sdk-am335x-evm-07.00.00.00/targetNFS, which is the directory I'm exporting via NFS.
!http://i.imgur.com/wvwpHjw.png(Qt kit details)!
-
As it turns out, I needed to point Creator to the qmake of the target, not to qtbase/bin/qmake in my build tree.
Which them leads to a new question: How does Creator make use of a binary built for a different architecture?!? It’s definately not running “qmake -query QT_SOME_VAR” on my embedded device!
-
Please, what exactly did you do to 'point Creator to the qmake of the target'?
I think Creator is running /usr/bin/qmake, which is not the qmake from the android kit. I suppose I could use a link, but is there another way?
I think Creator uses qmake not only to generate a makefile, but to query locations in the kit. So if it uses /usr/bin/qmake, it doesn't find the quick module (which is not installed on the original Ubuntu installation of Qt 5.2.1) But if it uses ~/Qt/5.3/android/bin/qmake, it would find the quick module.
-
Had same issue on lubuntu and Qt 5.2.1.
I removed Qt configuration files from .config folder in my home dir.
rm -r ~.config/QtProject
rm ~.config/QtProject.confReconfigure project again and all works as expected