Makefile : fichiers dans différents dossiers + CppUnit
Bonjour à tous,
J'aimerais créer un Makefile compilant des fichiers dans différents dossiers et créer 2 exécutables :
un pour le programme principal
un pour les tests unitaires menés avec CppUnit.
J'ai les dossiers suivants :
src : pour les sources
src_test : pour les sources de cppunit
bin : pour les exécutables
lib : endroits où seront crées les .o
J'ai réalisé un Makefile le plus compréhensible possible :
Code:
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
|
#Makefile
CPP=g++
CFLAGS = -I$(HEADDIR) -g -Wall -pedantic -Os
LDLIBS = -lcppunit
GLLIBS = GLLIBS = -ltiff -framework OPENGL -framework GLUT -framework GLUI -lobjc -lstdc++ -lm
EXEC = Projet
EXECTEST = TestsUnitaires
BINDIR = bin
SRCDIR = src
LIBDIR = lib
HEADDIR = src
SRCTESTDIR = src_test
SOURCES = $(wildcard $(SRCDIR)/*.cpp)
SOURCESTEST = $(wildcard $(SRCTESTDIR)/*.cpp)
OBJS = $(SOURCES:$(SRCDIR)/%.cpp=$(LIBDIR)/%.o)
OBJSTEST = $(SOURCESTEST:$(SRCDIRTEST)/%.cpp=$(LIBDIR)/%.o)
all: $(EXEC) $(EXECTEST)
# Création des exécutables
Projet: $(OBJS)
$(CPP) -o $(BINDIR)/$@ $^ $(CFLAGS) $(GLLIBS) $(LDLIBS)
TestsUnitaires: $(OBJSTEST)
$(CPP) -o $(BINDIR)/$@ $^ $(CFLAGS) $(GLLIBS) $(LDLIBS)
# Création des objets
$(LIBDIR)/%.o: $(SRCDIR)/%.cpp $(SRCDIR)/%.h
$(CPP) -o $@ -c $< $(CFLAGS) $(LDLIBS)
$(LIBDIR)/%.o: $(SRCTESTDIR)/%.cpp $(HEADDIR)/%.h
$(CPP) -o $@ -c $< $(CFLAGS) $(LDLIBS)
clean:
rm $(LIBDIR)/*.o
rm $(BINDIR)/* |
L'erreur issue du make est la suivante :
Code:
1 2
|
make: *** No rule to make target `lib/Acteur.o', needed by `Projet'. Stop. |
Acteur.cpp de mon projet une classe située dans src. (la première dans l'ordre alphabétique et la première à être compilée). Actuellement, lib est vide, tous les hpp sont situés dans src. Le Makefile est situé dans un dossier où se situent les dossiers src, lib, etc ...
J'espère que vous pourrez m'éclairer.
En vous remerciant par avance,
Xavier Duval