############################################################################################## # # Fichier # Makefile # DESCRIPTION # Ce fichier est utilise pour: # # - compiler les programmes du tp #03 # - archiver les fichiers avant la remise electronique # - faire la remise electronique # - verifier que la remise a bien eu lieu # # Auteur # Mohamed Lokbani, 22 février 2005, pour IFT1166, TP #03. # # - le .cshrc dont le path n'a pas été reconfiguré afin de pointer # d'abord le répertoire courant au moment de l'execution des programmes. # Pour palier à ce probleme, nous avons introduit ./ à coté de chaque programme # exécutable. # # # - écriture "élémentaire", on a évité par exemple d'utiliser les macros spéciales pour # ne pas brouiller les pistes! # # v1.01 ajuster une veille sauce ...... # # Comment l'utiliser # # make non_de_la_cible # # cibles possibles: # # prg avion Gotp3 # veriflin verifwin # all from_scratch # safeclean clean # archive verifarchive # # # Respecter l'ordre de la compilation. # # ------------------------------------------------------------------------------- # # Les cibles: # -1- Compiler dans une seule opération tous les fichiers: # make prg # ou # make all # # -2- Compiler que le fichier avion.cpp: # make avion # # -4- Compiler tp3H05 et générer l'exécutable (équivaut à -1-): # make gotp3 # # -5- À tout moment vous pouvez effacer les fichiers objets ou exécutables # créés avec la commande: # make clean # # -6- Pour un effacement propre (avec sauvegarde des vieux fichiers): # make safeclean # # -7- Pour comparer les résultats obtenus avec ceux fournis: # 1er Test => make verif1 # # -8- Pour archiver vos fichiers et vérifier que l'opération a été correctement exécutée: # make archive (et) make verifarchive # # # ------------------------------------------------------------------------------- ## # # Des questions? # # - durant les demonstrations, pratiques libres, pause durant le cours. # # # Commentaires en +: # # Makefile pour systemes UNIX (Windows/MinGW-MSYS, Linux ou Solaris) uniquement. # # Meme s'il est deconseillé, vous pouvez bricoler le contenu de ce fichier si ca vous chante! # # ############################################################################################## #------------- # variables globales # les flags utlises par le compilateur MESFLAGS = -Wall -pedantic -Os -I/. -L./ PROGRAMMES = avion Gotp3 #------------- # cibles potentielles prg: $(PROGRAMMES) #------------- # descritpion ... # pour fichier avion.cpp avion: avion.cpp avion.h g++ -c avion.cpp $(MESFLAGS) # pour le fichier exécutable Gotp3: tp3H05.cpp avion.h g++ -o tp3.exe tp3H05.cpp $(MESFLAGS) genaleat.o avion.o # verification que les sorties coincident veriflin: make Gotp3 ./tp3.exe > masortie.txt diff -b -w -i -B masortie.txt SortieLinux.txt verifwin: make Gotp3 ./tp3.exe > masortie.txt diff -b -w -i -B masortie.txt SortieWindows.txt # cible globale all: $(PROGRAMMES) # faire le menage afin de provoquer une autre compilation # sans danger ... je fais une copie ds le repertoire masauvegarde # Attention une seule copie est permise safeclean: install -d masauvegarde install -m0604 avion.h avion.cpp avion.o tp3.exe masauvegarde make clean # attention commande dangeureuse ... clean: \rm -f tp3H05.o avion.o tp3.exe from_scratch: clean all # le boulot est fait? alors on archive ... # Attention, ajouter ici le nom de votre rapport archive: make all tar -zcvf tp3.tar.gz avion.h avion.cpp monrapport # on verifie que l'archivage a bien eu lieu, en generant la table verifarchive: make archive tar -tzvf tp3.tar.gz