![]() |
Qt5 development on Harmattan
EDIT: Forget all about this below. Better solution is to use community repos which is under work
I'm starting this topic now, like I threatened. Personally I'd like to keep my current workflow, using QtCreator, instead of scratchbox. Here's a great resource for setting up qt5 development for QtCreator: http://trac.webkit.org/wiki/SettingU...vironmentForN9 Big thanks from me to the WebKit folks for this work - figuring out all that stuff by myself would have not been possible with the time I have. Here's my notes using this guide, hopefully it will save some time from others tackling this (for reference I'm developing on Ubuntu 10.04, some details might differ depending on your OS of choice): In my notes I'm going to use the following variables as shortcuts: $QTSDK = Path to QtSDK installation directory $QT5SETUP = Path to the directory where you set-up Qt5 (in the web-page it's ~/sfworks) 1.1) Prepare your environment - I could without problem use another directory than the ~/swork directory mentioned in the guide. The scripts included seem to be pretty smart in that regard. 1.4) Set up custom MADDE target. This didn't initially work for me, even as by documentation QtSDK installation is supposed to set it up. But if you set QTSDK environment variable to point to your QtSDK installation directory, then there is no problems. Example Code:
export QTSDK=/home/users/ajalkane/QtSDK - In the web-page there is a comment "Qt5 r26 and later versions messing up some include path". This is still a valid, you need to do the symbolic link. If you use some other path than the default ~/sfworks you need to adjust the link accordingly. Analyzing the include paths in the build errors will quite easily give you idea what kind of symbolic link to create. - I got weird errors about missing headers. It seems that downloading some of the sources can fail, and it does not give any errors so it's easy to miss among all the output. If that happens run again 1.6) to get again the sources : Code:
browser-scripts/clone-sources.sh --no-ssh Now you should have Qt5 target usable in QtCreator. To add it to your project, go to: Settings -> Build & Run -> Qt Versions. Add new qmake location Add there $QT5SETUP/qt5/qtbase/bin/qmake (of course replacing $QT5SETUP with the directory you downloaded the scripts into). With these instructions I was able to compile a simple hello world application. Does not tell much of course... But since I've not received my device yet, I'm trying to resist the urge to mess-up with my day-to-day device. I might fail during the weekend, though the abortion of the next billion somewhat helps restricting my geek urges. Some final notes: I think the scripts are the minimal that's needed for webkit. Some qt5 modules are not compiled. If you need some other modules for qt5, go to $QT5SETUP/qt5 and use the "init-repository" script to add more modules. No practical examples from me yet, as I'm in the hello world stage. I hope other people post here their own experiences, especially stuff that got them stuck for a while. No matter how trivial it might seem when looking back, it can substantially reduce the time each of us use on getting things rolling. Personally I'd like to see some experiences and practical instructions how to create qmake scripts that can automatically use Qt5 on device if it was installed. And also how to automatically transform the qml's to use QtQuick 2 - Qt Components QtQuick2 branch does something like that, but I haven't had time to dig into how similar technique could easiest be applied on QtCreator based project. |
Re: Qt5 development on Harmattan
how bout add this to the wiki instead ? :)
|
Re: Qt5 development on Harmattan
Quote:
|
Re: Qt5 development on Harmattan
Quote:
|
Re: Qt5 development on Harmattan
Another source that might be useful is http://qt-project.org/wiki/Create (setting app SDK for QtonPI)
The path needs to be tamed by actual app developers, yes. Any help improving the documentation is welcomed. Thanks for the notes! |
Re: Qt5 development on Harmattan
Quote:
The QtonPi page seems like a good one for some ideas too. |
Re: Qt5 development on Harmattan
I have put up a simple Qt project to github/harmattan that is probably the easiest way to show the changes needed to a project to get it compiling both on qt4 and qt5:
https://github.com/harmattan/helloqt5 It's based on the QtQuick project template created by QtCreator. The only thing missing is that *.qml files imports have to be modified manually when you switch between versions. I'm running out of time so I'll be progressing more slowly from now on. Probably I'll start doing stuff on this again when device arrives. |
Re: Qt5 development on Harmattan
I had time to do some more on this.
For putting the Qt5 libraries on device I didn't want to use the instructions on the URL in the first post, as the script does all kinds of stuff to the device I don't want. But all went well using this: http://qt-project.org/wiki/Qt-5-on-Nokia-N9 Basically I did: Code:
mkdir /home/developer/qt5build && cd /home/developer/qt5build I tried to remedy it with all kinds of nasty stuff, like modifying QtCreator/share/qtcreator/Nokia/qtversion.xml. That didn't work as then QtCreator complained it was wrong Qt version. Apparently it requires Qt4. I also tried some beta version of QtCreator 2.5.0, but didn't have any luck with that one either. I will personally wait now a bit if the next QtSDK/QtCreator would have Qt5 support for Maemo targets. If that doesn't happen soonish, I will look into using scratchbox (something I've tried to avoid, but apparently can't :)). But if anyone gets QtSDK to build Qt5 harmattan debs, please share. |
Re: Qt5 development on Harmattan
I have been trying to get my Qt5 environment up for my N9 following the instructions above from ajalkane and the link. Thanks ajalkane as I would not have got far without these.
I have not got there yet but thought I would document some of the problems I had. When making the custom MADDE environment using Code:
browser-scripts/setup-madde-toolchain.sh A quick Code:
apt-get install curl Having fixed this I have succeeded in building Qt5. I have tried then using this from within QtCreator by trying the helloqt5 example from ajalkane. The first issue was it did not like Code:
QT += declaritive Code:
QT += quick1 I have not got much further as when I try to compile I get this error Code:
make: arm-linux-gnueabi-g++: Command not found Anyone know how to get passed this? |
Re: Qt5 development on Harmattan
Quote:
In my case Code:
/opt/QtSDK/Madde/targets/harmattan_10.2011.34-1_rt1.2_qt5/bin/ |
Re: Qt5 development on Harmattan
Was able to transfer the qml directory and executable to my device. Just copied them there as have not figured howto package yet.
The initial attempt at running failed. It could not find the qt5 libraries. These have not been added to the ld cache when the qt5 packages were installed. I got around this with Code:
export LD_LIBRARY_PATH=/opt/qt5/lib/ Code:
file:///opt/helloqt5/qml/helloqt5/main.qml:2:1: module "com.nokia.meego" is not installed Do not know how yet but I am sure google will help. |
Re: Qt5 development on Harmattan
Thanks for the input and posts about progress. What's related to the helloqt5 project I'll try to fix when I have time to get into this again (in few weeks, I think). The best approach, I think, is to create a wrapper shell script for Qt5 builds that sets the LD_LIBRARY_PATH. Please let us know if you figure out what needs to be changed to get QML imports working.
And I'm not anymore as pessimistic about getting QtCreator to work with this - it won't be as easy as with Qt4, but I hope building debs at least can be made straightforward. I'll report on this when I get around to it again. |
Re: Qt5 development on Harmattan
I have tried pointing the imports to the right place:
Code:
export QML_IMPORT_PATH=/opt/qt5/imports Code:
file:///opt/helloqt5/qml/helloqt5/main.qml:2:1: plugin cannot be loaded for module "com.nokia.meego": Unknown error I may try also QtQuick 2 see if that changes anything. |
Re: Qt5 development on Harmattan
Stuart:
there are a couple of things at play here. Now don't take this as the absolute truth, as I might remember wrongly where I left off, but only as some hopefully helpful pointers... Basically helloqt5 project should compile when compiled against Qt5. But the QML files are not okay for running under Qt5. Right now they import QtQuick 1.1 (on Qt5 should be 2.0) and com.nokia.meego 1.0 (on Qt5 should be 2.0). The plan is to do similarly as in qt-components project, so that when building against Qt5 the resulting imports are replaced. But it's not done yet, so it must be done manually. This is written in the projects' README but is easy to miss. Also notice that I've made some mistakes in the commits to helloqt5, the version numbers in imports in main.qml are wrong and should be as in MainPage.qml. So, when you've transferred the QML files to device, replace the versions in the QML imports to 2.0 and you might get a bit farther. |
Re: Qt5 development on Harmattan
Quote:
Code:
QML_IMPORT_PATH=/opt/qt5/imports Code:
import QtQuick 2.0 |
Re: Qt5 development on Harmattan
Quote:
|
Re: Qt5 development on Harmattan
After some changes and updates, I'm trying to run the helloqt5 on device. But I get this:
Code:
QMetaProperty::read: Unable to handle unregistered datatype 'QDeclarativeComponent*' for property 'MDeclarativeInputContext::customSoftwareInputPanelComponent' On somewhat related note, I could not get LD_LIBRARY_PATH to work when running as user. I had to run in devel-su so that it would work. This seems strange. |
Re: Qt5 development on Harmattan
I went the scratchbox route. I'm too tired to write any details.
But it seems qt-components (even the QtQuick 2 branch) needs modifying before it can work on Qt5. The plugin loading has been changed, so relating to harmattan development at least the meego subdirectories plugins have to be modified like this: http://qt.gitorious.org/qt/qtbase/co...25ac404e303c5d Writing this here if someone wants to take the ball and run with it ;). |
Re: Qt5 development on Harmattan
I advice everyone to not use the currently packaged qt5 libraries (from webkit or snowshoe). Each of them has their own problems, and they're old snapshots.
Laszlo Papp is currently packaging the newest beta for Harmattan into the community repository. This will give us much better and easier way to go forward with Qt5 development on Harmattan. See here his blog for details: http://lpapp.blogspot.ie/2012/08/qt5...harmattan.html EDIT: Things like Laszlo is doing here is helping everyone using, and developing for, Harmattan. If you have the skills to do some debian packaging work, please consider contributing to the community repository. |
Re: Qt5 development on Harmattan
Good news, now the rest of the qt5 modules are available!
Next stop is fixing qt-components. Code:
|
Re: Qt5 development on Harmattan
Rejoice, qt-components have been now ported also. I haven't had time yet to test them, but will soon.
More details in Laszlo's blog here: http://lpapp.blogspot.ie/2012/09/qtq...harmattan.html |
Re: Qt5 development on Harmattan
I have now tested and it works with my helloqt5 project!
I will try soon to clean-up and update my helloqt5 project with the changes necessary, but now qt5 development in harmattan is MUCH easier than before. Post here if you have questions. |
Re: Qt5 development on Harmattan
I have now made the minimal changes to get helloqt5 to work with qt5 on harmattan. You can use this project to get started on converting your project for qt5:
https://github.com/harmattan/helloqt5 See README.md for detailed instructions. The short version is: - Install scratchbox - Install community repositories to scratchbox - apt-get update and Install qt5-* libraries to scratchbox - qmake && dpkg-buildpackage in helloqt5 directory - copy the debian installation file to device - Install community repositories to device - apt-get update and Install qt5-* libraries to device - dpkg -i helloqt5*.deb to device - Run like this: QML_IMPORT_PATH=/opt/qt5/imports LD_LIBRARY_PATH=/opt/qt5/lib /opt/helloqt5/bin/helloqt5 |
Re: Qt5 development on Harmattan
Is it possible to share the .deb file of ur helloqt5 project? Wud have liked to run on device and get some inspiration before setting up all the tricky dev environments :)
Thanks for ur effort and infos. |
Re: Qt5 development on Harmattan
Thank you for your efforts
Is there hope to work on Fremantle ?? I hope to be yes :) |
Re: Qt5 development on Harmattan
any new prebuilt qt5 libraries? openbossa dated 25 Jul. Isn't it too old?
|
Quote:
|
Re: Qt5 development on Harmattan
Is anyone working on QtCreator to deploy Qt5 app on the Device (N9).
instead of having the scratch box. Edit: I need some pointers, From where I have to start. Hope Interested people can join or, I can join them. |
Re: Qt5 development on Harmattan
Quote:
In short, the work I did was based on various alpha/beta releases of Qt5. Now that the real release has been done, only basing on that makes sense. So whatever's posted on here may be wildly outdated. It might be of some help in bringing the final release of Qt5 to N9, or it might just be distraction. |
Re: Qt5 development on Harmattan
bump!
Also would like to know answer to getvasanth question. |
Re: Qt5 development on Harmattan
Thanks for the reply "ajalkane". would like to provide some more help in this to take this forward.
|
Re: Qt5 development on Harmattan
Quote:
But a little recap: to get deploying working inside QtCreator that ships with Harmattan's SDK, you would need to create a custom plugin for QtCreator that can handle Qt5. Later QtCreator versions might have some more robust options to make this happen without creating a custom plugin, but I have not looked into it. |
Re: Qt5 development on Harmattan
Haven't actually tried Qt5 yet but wanted to ask a couple of things out of interest.
1. After installing Qt5 on scratchbox SDK environment, how do you select which version (4/5) to compile against? Using inline exports for each command aimed for Qt5? Care to give a couple of command line examples on building same app on Qt4 and Qt5. 2. Can Qt5 apps be tested locally on x86 build using Xephyr? 3. Can you use libmeegotouch with Qt5? I suppose it's built against Qt4. |
Re: Qt5 development on Harmattan
Quote:
export PATH=/opt/qt5/bin:$PATH Then compile as usual. I have some instructions in README in: https://github.com/harmattan/helloqt5 Though on first look some of it may be a bit off (I can't test now), but should help getting started. The biggest issue is of course that I wouldn't recommend using the community repos as the Qt5 version there is out-of-date (some beta version of Qt5). Quote:
|
Re: Qt5 development on Harmattan
Quote:
Is it possible to statically link the Qt modules (QtWebkit included) to the app so that it can be delivered in Nokia Store? Also, does the Mobility APIs work in Qt5? |
All times are GMT. The time now is 10:21. |
vBulletin® Version 3.8.8