Réfèrence indefinie dans mon makefile
Salut !
Je compile mes programmes (en C++) sous Linux grace a la commande toute bête:
Code:
1 2
|
g++ -g -W -Wall -mmmx -msse3 -m3dnow -pedantic *.cpp */*/*.cpp */*/*/*.cpp -o VMAP_ENGINE -lSDL -lGLU -lSDL_image |
(aucune error ni aucun warning)
Mais qui est assez "brouillon". Donc, j' essaye de passer au Makefile. Mais voila j' obtiens a chaque fonction appelé dans un fichier objet et defini dans un autre une erreur de linkage... (du moins, je crois)
Voici mon makefile:
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
|
CC = g++
CFLAGS = -g -W -Wall -mmmx -msse3 -m3dnow -pedantic
LDFLAGS = -lSDL -lGLU -lSDL_image
OBJ = main.o DataManager.o Divers.o
VMAP_ENGINE : $(OBJ)
$(CC) $^ -o $@ $(LDFLAGS)
#--- MAIN BUILD ---#
main.o : main.cpp
$(CC) main.cpp -c $(CFLAGS)
#------ END -------#
#--- SUB BUILD ---#
DataManager.o : File.o Texture.o ./VMAP/DataManager/DataManager.h ./VMAP/DataManager/DataManager.cpp
$(CC) -c ./VMAP/DataManager/DataManager.cpp File.o Texture.o -o $@
Divers.o : ./VMAP/Divers/VMAP.h ./VMAP/Divers/VMAP.cpp
$(CC) -c ./VMAP/Divers/VMAP.cpp -o $@
#------ END ------#
#--- DATAMANAGER BUILD ---#
Texture.o : ./VMAP/DataManager/Texture/VTEXTURE.h ./VMAP/DataManager/Texture/VTEXTURE.cpp
$(CC) -c ./VMAP/DataManager/Texture/VTEXTURE.cpp $(CFLAGS)
File.o : ./VMAP/DataManager/File/VFILE.h ./VMAP/DataManager/File/VFILE.cpp Attribute.o Dio.o
$(CC) -c ./VMAP/DataManager/File/VFILE.cpp $(CFLAGS)
#---------- END ----------#
#--- DIVERS BUILD ---#
#nothing to do for the moment
#--------- END ------#
#--- SUBFILE BUILD ---#
Attribute.o : ./VMAP/DataManager/File/ATTRIBUTE.cpp ./VMAP/DataManager/File/COLOR.cpp ./VMAP/DataManager/File/VERTEX.cpp ./VMAP/DataManager/File/ATTRIBUTE.h ./VMAP/DataManager/File/COLOR.h ./VMAP/DataManager/File/VERTEX.h
$(CC) -c ./VMAP/DataManager/File/ATTRIBUTE.cpp ./VMAP/DataManager/File/COLOR.cpp ./VMAP/DataManager/File/VERTEX.cpp $(CFLAGS)
Dio.o : ./VMAP/DataManager/File/DIO.cpp ./VMAP/DataManager/File/DIO.h Attribute.o
$(CC) -c ./VMAP/DataManager/File/DIO.cpp $(CFLAGS)
#-------- END --------# |
En fait ce que je veux faire c' est: "compiler" Attribute.o et Dio.o puis les lier dans le fichier objet File.o, puis lier ce fichier (File.o) avec Texture.o, ce qui donne le fichier DataManager.o. Les erreurs de linkage que j' ai provienne de DataManager.cpp qui est utilisé dans la construction de DataManager.o: DataManager.cpp appelle des fonctions contenus dans VFILE.cpp et VTEXTURE.cpp. Ces fonctions ne sont donc pas trouvé par le linker.
Merci d'avance.