czwartek, 3 grudnia 2009

Przygotowanie do programowania Qt 4.6 na Symbiana

Ostatni post zawierał informacje o tym jak powstawała biblioteka Qt na Symbiana. Teraz warto przygotować swój komputer do pracy do programowania biblioteki Qt. Zakładam że jest zainstalowane poprawnie SDK z Nokii (albo ADT z stron Fundacji Symbiana). Istotny jest wybór SDK-ów. Trzeba zainstalować S60 3rd FP1 SDK,S60 3rd FP2 SDK, S60 5th Edition v1.0 SDK, N97 SDK, albo Application Developer Toolkit i dodatki od Samsunga (DevPack v1.1 for Samsung i8910 HD oraz S60 3rd FP2) oraz SonyEricsson (Satio) . Następnie trzeba do do odpowiedniego SDK w którym chcemy pracować wgrać SDK dla OpenC/C++ 1.6. Dla każdego kto ma zamiar w Carbide C++ programować pod Qt 4.6 to musi pobrać patha x86Tools_3.2.5_Symbian_b482_qt.zip dla Windows XP / Vista / Seven. Trzeba to wypakować tam gdzie ma się zainstalowanego Carbide C++ w folderze \x86Build. Ci którzy używają Vista /Seven powinni zapoznać się z tą sekcją. Ja zainstalowałem najpierw Qt SDK for Windows* (283 MB) który zawiera kompilator MinGW, biblioteki pod Windows oraz QtCreator 1.3. Zazwyczaj zainstalujemy tym celu żeby nauczyć się programowania Qt. Trzeba wiedzieć, że później trzeba będzie odpowiednio przygotować pod pracę z Qt 4.6 SDK dla Symbiana.

Następnie pobieramy Qt 4.6 SDK dla Symbiana Instalujemy to na tym samym dysku co mamy zainstalowane SDKi Symbiana. Podczas instalacji pojawi się okno pytające się do którego SDKa Symbiana ma dodać pliki binarne biblioteki Qt dla emulatorów.

Użytkownicy XP / Visty / Seven muszą ręcznie dodać zmienne środowiskowe PATH na C:\Qt\4.6.0\bin; i restartować komputer (oraz ustawić uruchamianie pliku epoc.exe w trybie zgodności z XP). Następnym krokiem będzie aktualizacja Carbide C++ (istotne jest żeby zaktualizować kompilatora C:\Symbian\Tools\ADT_1.0\Carbide.c++\x86Build\Symbian_Tools\Command_Line_Tools\mwccsym2.exe do wersji większej niż 3.2.5, build 482). Programiści programujący na S60 3rd Edition, FP1 SDK muszą reinstalować bibliotekę RPipe z \Symbian\9.2\S60_3rd_FP1_3\RPipe_3.1.zip i wypakować to do folderu \Symbian\9.2\S60_3rd_FP1_3\Epoc32\ I no trzeba zamienić plik getexports.exe \Symbian\9.2\S60_3rd_FP1_3\Epoc32\tools\getexports.exe.

Najpierw zawsze preferuję sprawdzenie czy Qt będzie działać z linii poleceń. Po zainstalowaniu Qt 4.6 SDK dla Symbiana trzeba skonfigurować Qt z linii poleceń. Następnie trzeba skonfigurować Qt 4.6.0 żeby rozumiało polecenia dla kompilacji dla Symbiana. W folderze E:\Qt\4.6.0\ robimy plik wsadowy z poleceniem:

configure -platform win32-g++ -xplatform symbian-abld

Pojawi się monit pytający się jaką wersje chcemy używać wpisujemy 'o' jeżeli chcemy używać wersji Open Source Edition. Potem pojawi się następny monit z informacjami o licencjach, akceptujemy licencję LGPL wpisując 'y'. Trochę czasu potrwa Running syncqt.....

Kolejnym krokiem ma być dodanie ustawień dla systemu Windows w zmiennych środowiskowych. W większości przypadków wystarczy użyć Start ->Programy -> Symbian Foundation ADT v1.0 -> Carbide.c++ -> Configure environment for WINSCW command line (albo jak mamy tylko Carbide.c++ to trzeba użyć Start ->Programy -> Carbide.c++2.0 -> Configure environment for WINSCW command line, a potem Start -> Programy -> Qt for Symbian by Nokia v4.6.0 -> Qt for Symbian Command Prompt.

Z nieznanych mi powodów to nie zadziało więc postanowiłem ręcznie zmienić zmienną środowiskowej QMAKESPEC z 'win32-g++' na 'symbian-abld'. Gdy nam zechce się programować Qt pod Windows będzie trzeba z powrotem zmienić zmienną środowiskową QMAKESPEC.

Następnie wchodzę w jakiś projekt na przykład E:\qt\4.6.0\examples\widgets\analogclock i tworzę plik wsadowy z poleceniem cmd, który uruchamiam go. W oknie z linii poleceń wpisuję dla folderu E:\qt\4.6.0\examples\widgets\analogclock polecenie

qmake -v

to pojawi się

Qmake vesion 2.0.1a
Using Qt version 4.6.0 in E:\Qt\4.6.0\lib

Oznacza to tyle że mamy to już zainstalowane poprawnie i wystarczy wygenerować pliki konfiguracyjne dla projektu.

qmake -spec symbian-abld -r

Zostanie wygenerowanych sporo plików w tym folderze zawierające m. in. najważniejsze: Bld.inf i *.mmp oraz *.pkg. Jeżeli tych plików nie ma to oznacza że nie dodaliśmy do zmiennej środowiskowej PATH C:\Qt\4.6.0\bin; może być zamiast tego ścieżka dla Qt 4.6 SDK dla Windowsa czyli może być najpierw w PATH ścieżka C:\Qt\2009.05\qt\bin;. W tej sytuacji trzeba zmienić ścieżkę na C:\Qt\4.6.0\bin; tak żeby występowała najpierw. Następnie trzeba wpisać polecenie:

make

które z tych plików zrobi wersję binarną dla emulatora. Trochę to potrwa. Jeżeli w kodzie nie było błędów to można potem uruchomić emulator wpisując

make run

Jak chcemy już zrobić wersję na komórki wpisujemy

make release-gcce

Powstaną pliki binarne na komórkę, które potem trzeba przekształcić w paczkę. Wystarczy wpisać

make sis

Powyższe polecenia udają się pod warunkiem że mamy poprawnie skonfigurowane SDKi pod Symbiana. Podsumowując polecenie make które ma następujące argumenty:

debug-winscw - domyślne ustawienie które tworzy wersję binarną dla emulatora
debug-gcce - tworzy wersję binarną z informacjami do debugowania na komórkę przy pomocy kompilatora GCCE.
release-gcce - tworzy wersję binarną dla komórki przy pomocy kompilatora GCCE
run - uruchamia wersję binarną w emulatorze z projektu w danym folderze
sis - tworzy podpisaną paczkę do zainstalowania w komórce

Mamy 3 sposoby na tworzenie aplikacji: z poziomu Carbide C++, z poziomu QCreatora 1.3 i oczywiście z linii poleceń.

Zakładając że używaliśmy wcześniej Carbide.C++ (zarówno w wersji ze stron Nokii czy ADT ze stron Symbiana) to wystarczy wcześniej odpowiednio skonfigurować to IDE. W menu Carbide.C++ wybieramy Window ->Preferences -> (z listy) Qt. Klikamy w przycisk Add.. Pojawia się okno Add new Qt version gdzie trzeba podać ścieżki dla tej wersji co mamy zainstalowaną czyli u mnie to jest E:\Qt\4.6.0\bin oraz E:\Qt\4.6.0\include.
Klikam w Apply a potem w OK

Następnie trzeba stworzyć projekt Qt w Carbide.C++ używając z menu File -> New -> Qt Project. Zostanie uruchomiony kreator projektu Qt. Otwiera się okno New Qt Project Wizard. Z tego wybieramy z listy rozwijanej Qt GUI Main Window i klikamy w Next. Kolejne okno to New Qt Symbian OS C++ Project gdzie podajemy nazwę projektu. Nazwa projektu nie może zawierać spacji. Lokalizacja projektu musi być na tym samym dysku co zainstalowany Qt, SDK oraz CarbideC++ (u mnie to jest dysk E) i też nie może być spacji w nazwach folderów w ścieżce do projektu. Następne okno kreatora to Build Targets gdzie wybieramy sposób kompilacji dla projektu przy użyciu zainstalowanych SDKów. Do wyboru mamy:
Emulator Debug (WINSCW) tworzy wersję binarną dla emulatora Symbian w Windows.
Phone Debug | Release (GCCE) tworzą wersje binarne dla telefonu przy pomocy darmowego kompilatora GCCE, który zazwyczaj jest instalowany z odpowiednim SDK
Phone Debug | Release (ARMV5) tworzą wersje binarne dla telefonów przy pomocy kompilatora ARM RealView Compiler (RVCT). Ponieważ przeważnie nie mamy dostępu do tego kompilatora to pozostawiamy odznaczone. Kolejne okno kreatora to Qt Modules gdzie wybieramy moduły Qt które mają zostać użyte. Przeważnie do prostej aplikacji w celu przetestowania wystarczy to co jest. Ostatne okno kreatora to BasicSettings, gdzie podajemy nazwę głównej klasy, która zresztą jest nazwą projektu a także wygenrowany identyfikator UID3 i klikamy Finish

Możemy zauważyć jak wygląda dokument projektu

TEMPLATE = app
TARGET = QtWitaj
QT += core \
gui
HEADERS += QtWitaj.loc \
QtWitaj.h
SOURCES += QtWitaj.rss \
QtWitaj_reg.rss \
main.cpp \
QtWitaj.cpp
FORMS += QtWitaj.ui
RESOURCES +=
symbian:TARGET.UID3 = 0xE34838B0


Mamy już okno do pracy z kreatorem GUI jak wybierzemy prace z plikiem *.ui

Następnie z menu Window -> Show View -> Other... pojawi się okienko dialogowe i wybieramy z węzła Qt -> Qt C++ Property Editor i zmieniamy nazwę okna w Property WindowTitle na Witaj Świecie.

Można zmienić kod w pliku main.cpp na ten:

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QtWitaj w;
w.showMaximized();
w.show();
return a.exec();
}

i zapisujemy zmiany z menu wybieramy Run -> Run As... -> Run As Symbian OS Application i pojawia się okno New Launch Configuration Wizard i klikamy Finish i kompilujemy dla emulatora. Możemy sobie podziwiać w emulatorze.

Teraz pozostaje przygotowanie do uruchomienia w komórce Nokia XM 5800. Z menu Project -> Build Configuration -> Manage... i pojawia się okno dialogowe Add/Remove Carbide Build Configuration i z węzła S60_5th_Edition_SDK_v1.0 wybieram Phone Release (GCCE) i klikamy OK Następnie z menu Project -> Build Configuration -> Set Active -> Phone Release (GCCE) [S60_5th_Edition_SDK_v1.0].

Następnym krokiem będzie przygotowanie do robienia paczki instalacyjnej z menu wybieramy Project -> Properties i pojawi się okno dialogowe Properties for QtWitaj. Z węzła CarbideC++ wybieramy Build Configuration . Wybieramy zakładkę Add i z kolejnego okna dialogowego SIS Properties przy liście rozwijanej PKG File wybieramy QtWitaj_template.pkg i klikamy OK waracamy do poprzedniego okna dialogowego gdzie wciskamy Apply a potem OK.
Pozostaje już skompilowanie i zbudowanie paczki instalacyjnej wybieramy z menu Project -> Build Project. Trwa kompilacja i tworzenie paczki instalacyjnej QtWitaj_template.sisx

W komórce odinstaluję poprzednie wersje Qt 4.6 z poprzednich instalacji i uruchamiam E:\qt\4.6.0\qt_demos.sis w swojej Nokii XM 5800 . Po zainstalowaniu sprawdzam czy dema Qt zainstalowane działają.

W Project Explorator CarbideC++ klikamy 2 razy w QtWitaj_template.sisx i rozpoczynamy instalację poprzez Nokia PC Suite. W komórce uruchamiamy w Menu -> Aplikacje -> QtWitaj

Podczas tworzenia tej instrukcji oparłem się na materiałach z wiki dla programistów Symbiana dodałem w tym swoje spostrzeżenia jakie miałem z problemami podczas przerabiania tej instrukcji. Dla programistów preferujących Qt Creatora 1.3 polecam zapoznanie z filmami na blogu dla programistów Qt.

1 komentarz: