====== Kompilacia QT ======
===== Pouzitie QT zo systemovych balickov =====
Hotovu a funkcnu QT mozeme v ubuntu stiahnut pomocou balickoveho managera, resp. cez apt. Pre Qt5 sa jedna o balicek qt5-default, pre Qt4 sa jedna o balicek qt4-default.
Vyhody pouzitia Qt z balicka su hlavne:
* rychla a jednoducha instalacia
* garantovana funkcnost a stabilita
Nevyhody pouzitia Qt z balicka su hlavne:
* v balickoch su starsie verzie Qt (hlavne ak pouzivame starsie LTS Ubuntu)
* takato Qt neobsahuje vsetky moduly - niekedy je potrebne najst a stiahnut balicek s modulom (napr. qtpositioning5-dev, libqt5websockets5-dev)
* Qt sa nainstaluje priamo do systemu, takuto Qt len z tazkostami prenesieme na iny PC
===== Instalacia z Qt instalatorov =====
Qtcku je mozne nainstalovat pomocou instalatorov dostupnych na oficialnych strankach Qt. Pre starsie verzie Qt (<5.6) su zvycajne dostupne offline balicky pre linux 32bit aj 64bit. Pre novsie verzie sa avsak balicek pre 32bit linux nevyraba, v takomto pripade je potrebne pouzit iny sposob instalacie.
===== Vykompilovanie Qt zo zdrojakov =====
Tato cesta nam ponuka najviac moznosti, no zaroven si treba dat pozor na par zaludnosti.
Postup je nasledovny:
* treba stiahnut ziadanu verziu zdrojakov Qt z oficialnych stranok (nieco ako qt-everywhere-src-5.12.1.tar.xz)
* poinstalovat vsetky potrebne dependencies
* nakonfigurovat instalaciu skriptom "configure"
# priecinok, do ktoreho sa Qt nainstaluje (priecinok nebude obsahovat zdrojaky) urcime pomocou "prefix"
# pouzivame opensource verziu
# confirm-license nebude vyzadovat potvrdenie licencie klavesou
./configure -prefix /opt/Qt/Qt5.12.1 -opensource -confirm-license
Ak configure vyhodi nejake chyby, zvycajne sa jedna o chybajucu dependency - treba doinstalovat spravny balik.
* vykompilovat pomocou "make"
make -j6
* nainstalovat na zvolene cesty pomocou "make install"
make install
Ak vsetko prebehne uspesne, hotova Qt bude nainstalovana na ceste specifikovanej pomocou "prefix".
===== Prestahovanie Qt (pouzitie qt.conf) =====
Kazda vykompilovana Qt ma nastavene cesty k jednotlivym castiam ako Headers, Libraries, Includes, ... . Tieto cesty mozeme overit prikazom:
$ ./qmake -query
QT_SYSROOT:
QT_INSTALL_PREFIX:/opt/Qt/Qt5.10.1
QT_INSTALL_ARCHDATA:/opt/Qt/Qt5.10.1
QT_INSTALL_DATA:/opt/Qt/Qt5.10.1
QT_INSTALL_DOCS:/opt/Qt/Qt5.10.1/doc
QT_INSTALL_HEADERS:/opt/Qt/Qt5.10.1/include
QT_INSTALL_LIBS:/opt/Qt/Qt5.10.1/lib
QT_INSTALL_LIBEXECS:/opt/Qt/Qt5.10.1/libexec
QT_INSTALL_BINS:/opt/Qt/Qt5.10.1/bin
QT_INSTALL_TESTS:/opt/Qt/Qt5.10.1/tests
QT_INSTALL_PLUGINS:/opt/Qt/Qt5.10.1/plugins
QT_INSTALL_IMPORTS:/opt/Qt/Qt5.10.1/imports
QT_INSTALL_QML:/opt/Qt/Qt5.10.1/qml
QT_INSTALL_TRANSLATIONS:/opt/Qt/Qt5.10.1/translations
QT_INSTALL_CONFIGURATION:/opt/Qt/Qt5.10.1/etc/xdg
QT_INSTALL_EXAMPLES:/opt/Qt/Qt5.10.1/examples
QT_INSTALL_DEMOS:/opt/Qt/Qt5.10.1/examples
QT_HOST_PREFIX:/opt/Qt/Qt5.10.1
QT_HOST_DATA:/opt/Qt/Qt5.10.1
QT_HOST_BINS:/opt/Qt/Qt5.10.1/bin
QT_HOST_LIBS:/opt/Qt/Qt5.10.1/lib
QMAKE_SPEC:linux-g++
QMAKE_XSPEC:linux-g++
QMAKE_VERSION:3.1
QT_VERSION:5.10.1
Cesty mozeme taktiez vidiet v QtCreatore:
{{howto:qt_paths.png?800x557}}
Pokial chceme uz existujucu instalaciu Qt presunut na iny PC / presunut na inu cestu v suborovom systeme, je potrebne tieto cesty overridovat. Toto sa da realizovat vytvorenim suboru qt.conf na urovni binarky qmake.
==== Priklad qt.conf - Qt pre mikro_cortexa8 ====
Qt vo virtualnom prostredi mikroelektroniky mala nastavene cesty pre cross-kompilaciu do priecinku /clfs. Nasim cielom bolo nasmerovat tieto cesty do nasho toolchainu - na urovni binarky qmake sme preto vytvorili nasledovny qt.conf:
[Paths]
Prefix = /opt/qt5
Headers = /opt/qt5/include/qt
Libraries = /opt/qt5/lib
ArchData = /opt/qt5/lib/qt
Data = /opt/qt5/share/qt
Binaries = /opt/qt5/bin
LibraryExecutables = /opt/qt5/lib/qt
Plugins = /opt/qt5/lib/qt/plugins
Imports = /opt/qt5/lib/qt/imports
Qml2Imports = /opt/qt5/lib/qt/qml
Translations = /opt/qt5/share/qt
Documentation = /opt/qt5/share/doc/qt
Settings = /opt/qt5/etc/xdg
Examples = /opt/qt5/examples
Tests = /opt/qt5/tests
HostPrefix = /usr/toolchain/mikro_cortexa8/cross-tools
HostData = /usr/toolchain/mikro_cortexa8/cross-tools
HostBinaries = /usr/toolchain/mikro_cortexa8/cross-tools/bin
HostLibraries = /usr/toolchain/mikro_cortexa8/cross-tools/lib
Sysroot = /usr/toolchain/mikro_cortexa8/arm-linux-musleabihf