Installation de Qt 5 : Préambule

L’installation de Qt est une opération relativement longue. Elle se compose de 6 étapes distinctes :


 - Réglage du fichier d'échange,
 - Installation des librairies système,
 - Installation du noyau Qt et des outils de développement Qt,
 - Installation des librairies Qt,
 - Installation de l ‘environnement de développement QtCreator,
 - Réglage de certains paramètres système,
 - Configuration de QtCreator et de la chaîne de compilation.

Réglage du fichier d'échange

Un compilateur C/C++ est assez gourmand en terme d'utilisation mémoire. C'est encore pire avec Qt dont certaines libraries ou fonctionnalités sont susceptibles de générer pas mal de code. Lorsque le compilateur manque de mémoire vive, il utilise un fichier d'échange. Par défaut, ce fichier d'échange sur un Raspberry Pi est assez petit. Il nous faut donc en augmenter sa taille. Pour cela ouvrez un terminal et éditez avec "nano" le fichier "/etc/dphys-swapfile" :


sudo nano /etc/dphys-swapfile


Dans ce fichier modifiez la variable CONF_SWAPSIZE en lui donnant la valeur 2048 :


CONF_SWAPSIZE=2048


Sauvez le fichier par "Ctrl+O, fermez nano par "Ctrl+X" puis redémarrez le Raspberry Pi par :


reboot

Installation des librairies système

Lors de développements il est souvent nécessaire de reposer tout ou partie du code sur des librairies exportant des fonctions prédéveloppées. Les librairies système permettent cela. On installera uniquement celles dont on aura besoin. Certaines sont peut-être déjà installées, les commandes suivantes permettront de les mettre à jour si nécessaire.


Lancez un terminal et exécutez les commandes suivantes :


sudo apt-get install build-essential


sudo apt-get install libfontconfig1-dev libdbus-1-dev libfreetype6-dev libicu-dev libudev-dev libinput-dev libxkbcommon-dev libssl-dev libpng-dev libjpeg-dev libglib2.0-dev libraspberrypi-dev


Selon vos objectifs de développement vous pouvez également installer les librairies suivantes :


Bluetooth


sudo apt-get install bluez libbluetooth-dev


Multimedia


sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad libgstreamer-plugins-bad1.0-dev gstreamer1.0-pulseaudio gstreamer1.0-tools gstreamer1.0-alsa


Audio


sudo apt-get install libasound2-dev pulseaudio libpulse-dev


Base de données


sudo apt-get install libpq-dev libmariadb-dev libmariadbclient-dev-compat libsqlite3-dev


Impression


sudo apt-get install libcups2-dev


X11


sudo apt-get install libx11-dev libxcb1-dev libxkbcommon-x11-dev libx11-xcb-dev libxext-dev


WebKit


sudo apt-get install libicu-dev libsqlite3-dev libxslt1-dev libssl-dev


QML


sudo apt-get install qtdeclarative5-dev libqt5qml5

Installation du noyau Qt et des outils de développement Qt

Dans le terminal, exécutez la commande suivante :


sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools qtbase5-doc qtbase5-private-dev qt5-doc qt5-image-formats-plugins qt5-qmltooling-plugins

Installation des librairies Qt

Dans le terminal, exécutez la commande suivante :


sudo apt-get install libqt5multimedia5 libqt5network5 libqt5qml5 libqt5serialport5 libqt5sql5 libqt5sql5-mysql libqt5sql5-sqlite libqt5widgets5 libqt5serialport5-dev

Installation de l ‘environnement de développement QtCreator

Dans le terminal, exécutez la commande suivante :


sudo apt-get install qtcreator

Réglage de certains paramètres système

A ce stade, tout ce qui est nécessaire a été installé. Vous trouverez les outils Qt dans le menu "Programmation" du menu principal du Raspberry Pi.


Si l’on développe une application devant accéder aux ressources matérielles du Raspberry Pi via son port GPIO, il est nécessaire que le programme soit lancé par un utilisateur avec les droits. Ce n’est pas le cas de l’utilisateur Pi par défaut. Il faut donc lui donner ce droit via la commande "sudo"". Celle-ci doit être appliquée à l’environnement de développement de Qt nommé QtCreator. Pour cela, à partir du menu de démarrage, localisez la commande "Programmation/Qt Creator"" et cliquez sur celle-ci avec le bouton droit de la souris. Sélectionner alors la commande "propriétés"". Dans la boite de dialogue, sélectionner l’onglet "Entrée de bureau"". Dans la ligne "Commande"", faire précéder la commande "qtcreator %F" par "sudo" comme indiqué dans l’image suivante :



Configuration de QtCreator et de la chaîne de compilation

A partir du menu de démarrage, sélectionner la commande "Programmation/Qt Creator"". Dans la barre de menu de QtCreator sélectionner la commande "Outils/Options"". Dans la fenêtre de dialogue "Options"", sélectionnez le contexte "Environnement"" dans la liste à gauche de la fenêtre, puis l’onglet "Interface"". Modifier l’option "Langue"" et choisir "English".


Vous pouvez trouver bizarre que je vous conseille de sélectionner la langue anglaise pour l'interface de QtCreator. En fait, vous pouvez ne pas le faire. La raison pour laquelle je procède à cette modification est liée au fait que toute la documentation de Qt est en anglais. Il est alors plus simple de retrouver les commandes de Qt Creator à partir de cette documentation.



Pour valider ce choix, cliquer sur « Appliquer », puis fermer et redémarrer Qt Creator.


Lors de l’installation, le système détecte qu’il fonctionne sur un mini-ordinateur embarquable. Il installe donc une chaîne de compilation pour des environnements embarqués. Ce n’est pas ce qui est nécessaire pour développer des applications standards fonctionnant directement sous le système d’exploitation. Il est donc nécessaire de redéfinir une chaîne de compilation adaptée au besoin local.


Pour cela, procéder comme suit (Attention, certaines options peuvent changer en fonction de la version de Qt Creator installée). Ce sera toujours la dernière disponible et pas nécessairement celle qui a été utilisée à la date de rédaction de ce document. La version utilisée pour rédiger ce document est la 4.2.


 - Dans le menu principal de Qt Creator, sélectionner l’option "Help/About Plugins"
 - Dans la fenêtre "Installed Plugins", si elles sont cochées, décochez les options :
   - Android
   - Qnx
   - RemoteLinux



Cliquez sur "Close" puis fermez et redémarrez QtCreator.


Nous pouvons maintenant configurer notre kit de compilation et créer une première application de manière à vérifier que tout fonctionne.


 - Dans le menu principal de Qt Creator sélectionnez la commande "Outils/Options","
 - Dans la fenêtre "Options", sélectionnez le contexte "Kits"
 - Dans le contexte "Kits", sélectionnez l'onglet "Kits"


Il y a de fortes chances que les champs C et C++ indiquent CLANG11 plutôt que GCC. Les compilateurs GCC permettant généralement une meilleure portabilité, il est préférable de choisir ces derniers. La fenêtre doit donc être conforme à celle présentée ci-dessous :



Si tout est conforme, cliquez sur le bouton "Apply", puis fermez la fenêtre en cliquant sur le bouton "OK".

Première application Qt : Une simple fenêtre vide

Cette application nous permet de vérifier que tout est en place...


 - Dans le menu principal de Qt Creator, sélectionner l’option "File/New File or Project"
 - Dans la fenêtre de création, sélectionnez les options telles que présentées dans l'image suivante :



 - Cliquez le bouton "Choose..."
 - Dans la fenêtre suivante, dans le champ "Create in :" remplacer ""/root"" par ""/home/pi""



NOTE : Le répertoire vers lequel QtCreator propose de créer le projet est celui de l’utilisateur "root" car nous lançons QtCreator avec la commande "sudo"". Mais nous sommes l’utilisateur "pi"", il est donc plus facile de créer nos projets dans le répertoire ""/home/pi"".


 - Cliquez le bouton "Next" à 5 reprises,
 - Cliquez le bouton "Finish". Un projet a été créé. Il reste à compiler son code et à l'exécuter.
 - Lancez un build par la combinaison de touches "Ctrl + B",
 - En fin de build, lancez une exécution par la combinaison de touches "Ctrl + R".


Une fenêtre vide doit être affichée.

Le problème de l'utilisateur root

Le fait que nous lançons QtCreator via une commande "sudo qtcreator", comme nous l'avons vu, pose un petit problème. A partir du moment ou "sudo" est utilisé, QTCreator nous voit comme l'utilisateur "root". En soit, ce n'est pas grave, il suffit, comme expliqué au paragraphe précédent de prendre garde à l'endroit ou QTCreator crée nos projets.


Mais cela pose un autre problème. Quand QTCreator compile nos projets, il place le résultat dans un répertoire qu'il crée de lui même. Du coup, ce répertoire se situe dans "/home/pi", mais il appartient à "root". Nous pouvons voir son contenu, mais on ne peut pas le modifier, ni l'effacer. Un comble !!!.


Il existe un moyen simple de régler ce problème. Après le premier build, ouvrez un terminal et exécutez la commande suivante :


sudo chown pi * -R


Les puristes de Linux trouveront peut-être cela un peu brutal, mais au moins ça marche et c'est efficace. "chown" veut dire "Change Owner", en français : Changement de propriétaire. les options "* et -R" veulent dire que tous les fichiers de tous les repertoires sont concernés. Enfin "pi", c'est le propriétaire de tout cela. et toc.


La prochaine étape : Librairie bcm2835.