1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| # http://gl.developpez.com/tutoriel/outil/makefile/
# Ce makefile est compliqué, il y a makefile.simple comme exemple simple
# Les deux makefile font la même chose
# "man pkg-config" pour les infos sur les options
#CC=gcc
CC=i586-mingw32msvc-gcc
ERROR_CFLAGS = -Wall -Wextra -pedantic
GTK_CFLAGS=`pkg-config --cflags gtk+-2.0`
CFLAGS = $(ERROR_FLAGS) $(GTK_CFLAGS)
GTK_LDFLAGS = `pkg-config --libs gtk+-2.0`
LDFLAGS = $(ERROR_FLAGS) $(GTK_LDFLAGS)
# -TC- On liste tous les fichiers sources du projet
SRC1=main.c pendu.c commun.c
SRC2=lecture_pendu.c lecture.c commun.c
SRC=$(SRC1) $(SRC2)
# -TC- Pour construire la liste des fichiers objets, c'est simple, car on veut
# un fichier objet par fichier d'implantation
OBJ1=$(SRC1:.c=.o)
OBJ2=$(SRC2:.c=.o)
OBJ=$(OBJ1) $(OBJ2)
EXEC=pendu.exe lecture_pendu.exe
#EXEC=pendu lecture_pendu
all: $(EXEC)
# -TC- Instruction destinée à l'édition des liens. $@ correspond à la cible et $^ à
# la liste des dépendances
#pendu : $(OBJ1)
pendu.exe : $(OBJ1)
$(CC) -o $@ $^ $(LDFLAGS)
#lecture_pendu : $(OBJ2)
lecture_pendu.exe : $(OBJ2)
$(CC) -o $@ $^ $(LDFLAGS)
# -TC- Ici, on liste les dépendances pour chaque fichier d'implantation
main.o : pendu.h
pendu.o: pendu.h commun.h
lecture.o : lecture.h
lecture_pendu.o : lecture.h commun.h
# -TC- Enfin, on utilise une règle d'inférence générique pour la compilation
# des fichiers sources. $@ désigne la cible, et $< désigne la 1ère des
# dépendances. Cette manière de faire est utile lorsqu'on a plus de 2 fichiers
# d'implantation à compiler
%.o: %.c
$(CC) -o $@ -c $< $(CFLAGS)
# Pour déclarer que clean et mrproper ne fabriquent pas les éventuels fichiers
# clean et mrproper qui pourraient éventuellement être présent dans le
# répertoire courant : .PHONY
.PHONY: clean mrproper
# Lancer avec "makefile clean"
clean:
rm -rf *.o
# Lancer avec "makefile mrproper" qui lancera aussi clean car clean en dépend
mrproper: clean
rm -rf $(EXEC)
# TC : commentaires par mujigka : http://www.developpez.net/forums/member.php?u=62148 |
Partager