Cliquer ici pour imprimer

Dernière modification : 26/04/2020 à 12:04

Makefile, Compilation séparée et bibliothèque graphics.h

Le but de la séance est de se familiariser avec la compilation séparée, l'utilisation de la commande make et du fichier Makfile, et de découvrir une bibliothèque permettant de dessiner dans une fenetre graphique.

Compilation séparée

Lire les slides 6 à 18 de ce document. Recopiez les exemples et testez la compilation séparée.

Lire ce tutoriel au moins jusqu'à l'étape 7 incluse et écrivez un makefile permettant de compiler l'exemple des slide 12-13 du premier document avec la commande make. Lire veut dire lire et comprendre et testez les exemples fournis.

La bibliothèque graphique MLV

Pour notre mini projet, nous allons avoir besoin d'afficher des éléments dans une fenetre graphique. Pour cela nous allons utiliser une bibliothèque assez simple basée sur une bibliothèque plus complexe appellée SDL (Simple Direct Media Layer).

Cette bibliothèque a été écrite par Adrien Boussicault (Labri) et Marc Zipstein (UGE UPE-MLV). Elle est censé fonctionner sous tous les OS qui supportent SDL, mais nous ne pouvons vous garantir son fonctionnement que sous les distributions Linux standard à l'heure actuelle.

Récupérer et installer la bibliothèque

  • Référez vous aux consignes de la page d'installation. L'installation décrite pour les machines Linux via les paquets 64bits pour Ubuntu a été testé sur une distribution live Ubuntu LTS 20.04 bootée depuis une clef USB. Pour télécharger l'OS et configurer votre clef USB, référez vous au site officiel. Vous n'avez qu'a installer (ouvrir avec gestionnaire de paquet, puis cliquez sur installer) les deux paquets libumlv (pour pouvoir faire tourner des programmes) et libumlv-dev (pour pouvoir compiler vos programmes) ainsi que le meta paquet build-essential (tapez sudo apt install build-essential dans un terminal) pour avoir entre autre gcc.
  • Téléchargez également l'archive contenant le code source de la bibliothèque et décompressez la dans votre répertoire de travail.
  • Décompressez l'archive avec la commande tar xzf mlv-2.0.2.tar.gz. Placez vous dans le répertoire mlv-2.0.2/examples/beginner/
  • Essayez un gcc 01_hello_world.c. Ça fonctionne ? Quelle erreur obtenez vous ?
  • Essayez gcc -c 01_hello_wold.c. Normalement vous devriez obtenir un fichier 01_hello_world.o. C'est donc l'édition des liens et non la compilation qui pose problème.
  • Essayez gcc 01_hello_wold.o -lMLV. Ceci devrait fonctionner et vous devriez obtenir un fichier exécutable a.out. Testez ce dernier, cela devrait afficher une fenêtre graphique avec le texte hello world

Pour la suite des exercices qui utiliseront cette bibliothèque, vous utiliserez évidemment un fichier Makefile permettant de faire tout ça simplement en utilisant la commande make.

Les options de compilations seront comme toujours -Wall -pedantic -ansi, et vous rajouterez pour l'édition des liens l'option -lMLV

Découverte

Regardez et tester les exemples du répertoire beginner (et medium et advanced si vous le souhaitez). En vous inspirant du fichier 02_shapes.c, faites un programme qui affiche une maison (un carré rouge pour le mur principale, un triangle bleu pour le toit, des rectangles de couleur pour les fenêtres, un rond jaune pour faire un soleil.. soyez créatifs.

Pour la suite du projet nous aurons essentiellement besoin de la fonction qui dessine un rectangle, de celle qui récupère une touche tapée au clavier et de celle qui rafraichit l'affichage. Identifiez bien ces trois fonctions.

L'ensemble des fonctions de la bibliothèque et leur documentation est accessible à cette adresse.

Rendu

Dans un répertoire nommé login_tp1 copiez vos .c, makefile et .h. Vous pouvez y ajouter un fichier texte README si vous avez des choses à expliquer à joindre à votre rendu. Depuis le répertoire parent, tapez la commande tar czf login_tp1.tgz login_tp1. Déposez sur blackboard le fichier obtenu.