Makefile: linker plusieurs répertoires
Bonjour,
Je dois travailler en C++ en utilisant un makefile fait par quelqu'un d'autre, mais je n'ai pas du tout d'expérience avec les makefile, et je bloque sur quelque chose. Voilà le makefile que j'ai :
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
|
SRC=$(shell ls *.cc)
SRC_GENVIDEO=$(shell ls genvideo/*.cc)
LIB=-lxml2 -lpng -lxine -lgsl -lgslcblas -lm -lX11 -lpthread -lboost_filesystem-gcc34
LIBS=-L/usr/X11R6/lib -L/home/fgillier/local/lib
INCLUDES=-I/usr/include/libxml2 -I/home/fgillier/local/include
DEBUG=valgrind
CXX=g++
CC=g++
ifeq ($(OUTPUTS),yes)
OPTS=-DOUTPUTS
endif
ifeq ($(DEBUG),yes)
CXXFLAGS = -Wall -g $(OPTS) $(INCLUDES) -DDEBUG
else
ifeq ($(DEBUG),valgrind)
CXXFLAGS = -Wall -g -o3 $(OPTS) $(INCLUDES) -DHAVE_PTHREAD
else
CXXFLAGS = -Wall $(OPTS) $(INCLUDES) -ffast-math -fcaller-saves -finline-functions -funroll-all-loops -O3 -DHAVE_PTHREAD
endif
endif
all: tracker
lib: libpom.a
tracker: $(SRC:.cc=.o)
$(CXX) $(CXXFLAGS) $(LIBS) -o $@ $^ $(LDFLAGS) $(LIB)
libpom.a: $(SRC:.cc=.o)
ar rc libpom.a $^
ranlib libpom.a
Makefile.depend: *.h *.cc Makefile
$(CC) -M $(INCLUDES) *.cc > Makefile.depend
clean:
rm -f *.o tracker *~
test1: $(SRC:.cc=.o) $(SRC_GENVIDEO:.cc=.o)
$(CXX) $(CXXFLAGS) $(LIBS) -o $@ $^ $(LDFLAGS) $(LIB)
-include Makefile.depend |
J'essaie de le modifier pour faire intervenir des classes d'un autre répertoire que le répertoire courant, c'est pourquoi j'ai défini SRC_GENVIDEO et l'ai ajouté à la règle pour créer l'exécutable test1. Les fichiers .o se créent correctement (je crois), mais j'obtient une erreur au moment de linker le tout :
Code:
1 2 3 4
|
/home/fgillier/src/surv/tracker/cube.cc:219: undefined reference to `GenVideo::GenVideo(char*, int)'
collect2: ld returned 1 exit status
make: *** [test1] Error 1 |
J'imagine qu'il faut que j'inclue le répertoire dans lequel sont ces nouvelles classes quelque part, mais ce makefile est un peu trop "condensé" et je ne trouve pas où.
Merci d'avance de votre aide, et si vous avez un bon tutorial à me conseiller pour les makefile (pas pour les bases, mais pour faire des makefile efficaces du genre de celui-ci), c'est avec plaisir !