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
|
CC=gcc
CPP=g++
# Les différents répertoires contenant respectivement les fichiers : Sources *.c, Headers *.h, Objets *.o, l'exécutable
SRCDIR=Src
HEADDIR=Include
LIBDIR=Objet
BINDIR=Bin
# Les différentes options de compilations, soyons strictes !
CFLAGS= -I$(HEADDIR) -g -Wall -pedantic -Os
# Les différents FrameWorks et bibliothèques pour le linkage
GLLIBS = -ltiff -framework OPENGL -framework GLUT -framework GLUI -lobjc -lstdc++ -lm
# L'exécutable
BIN=MonExecutable
# Où trouver les différents sources *.c qu'il faudra compiler pour créer les objets correspondants
SRC= $(wildcard $(SRCDIR)/*.c)
OBJ= $(SRC:$(SRCDIR)/%.c=$(LIBDIR)/%.o)
# Où trouver les différents sources *.cpp qu'il faudra compiler pour créer les objets correspondants
SRCPP= $(wildcard $(SRCDIR)/*.cpp)
OBJCPP= $(SRCPP:$(SRCDIR)/%.cpp=$(LIBDIR)/%.o)
all: $(BIN)
#Création de l'exécutable
MonExecutable: $(OBJ) $(OBJCPP)
$(CC) -o $(BINDIR)/$@ $^ $(CFLAGS) $(GLLIBS)
# Création des différents *.o à partir des *.c
$(LIBDIR)/%.o: $(SRCDIR)/%.c $(HEADDIR)/%.h
$(CC) -o $@ -c $< $(CFLAGS)
# Création des différents *.o à partir des *.cpp
$(LIBDIR)/%.o: $(SRCDIR)/%.cpp $(HEADDIR)/%.h
$(CPP) -o $@ -c $< $(CFLAGS)
# Nettoyage des objets => Tout sera recompiler !
clean:
rm $(LIBDIR)/*.o
# Nettoyage complet => clean + effacement du l'exécutable
Clean: clean
rm $(BINDIR)/* |
Partager