Ce n'est peut être pas le bon forum pour l'outil make mais bon puisque j'écrit en C. En plus quand je vois ce qu'il a offrir, je me dit qu'il aurait bien une place à part sur le site.
Bref, j'ai makefile principale (maître) dont voici la source qui m'as inspiré : https://gl.developpez.com/tutoriel/outil/makefile/
Code makefile : Sélectionner tout - Visualiser dans une fenêtre à part
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 #makefile maitre export CC=gcc export CFLAGS = -std=c99 -lglut -lGL -lGLU -lpng -Wall -g #export LDFLAGS= #export INCLUDES= #export DEFINE = -DTCP_DELAY_BIND_ALL GAME_DIR=game EXEC=$(GAME_DIR)/GAME #default: $(EXEC) #all: default all: $(EXEC) $(EXEC): @(cd $(GAME_DIR) && $(MAKE)) #@(cd $(????_DIR) && $(MAKE)) .PHONY: clean mrproper $(EXEC) clean: @(cd $(GAME_DIR) && $(MAKE) $@) #@(cd $(????_DIR) && $(MAKE) $@) zip : zip Jacquets_JumpingBanana.zip *.c *.h makefile makefile2 images/*/* data/*
Ensuite dans un dossier game, j'ai un fichier game.c et game.h et le makefile suivant :
Code makefile : Sélectionner tout - Visualiser dans une fenêtre à part
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 #sous makefile EXEC = jb SRC= $(wildcard *.c) OBJ= $(SRC:.c=.o) #default: $(EXEC) #all: default all: $(EXEC) game: $(OBJ) @$(CC) -o $@ $^ $(LDFLAGS) #$(CC) $(CFLAGS) -c $< -o $@ %.o: %.c @$(CC) -o $@ -c $< $(CFLAGS) $(INCLUDES) .PRECIOUS: $(TARGET) $(OBJECTS) $(EXEC) : $(OBJ) $(CC) -o $(EXEC) $(OBJ) $(CFLAGS) .PHONY: clean mrproper clean: @rm -rf *.o @rm -rf $(EXEC)
Actuellement mon makefile ne retrouve pas ma main dans le dossier PARENT, voici le message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 make[1]*: on entre dans le répertoire «*/home/sam/Bureau/jumpingbanana/ProjetBanana/Game (copie)/outilMake/game*» gcc -o jb game.o -std=c99 -lglut -lGL -lGLU -lpng -Wall -g /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o*: Dans la fonction «*_start*»*: (.text+0x20)*: référence indéfinie vers «*main*» collect2: error: ld returned 1 exit status makefile:21: recipe for target 'jb' failed make[1]: *** [jb] Error 1 make[1]*: on quitte le répertoire «*/home/sam/Bureau/jumpingbanana/ProjetBanana/Game (copie)/outilMake/game*» makefile:16: recipe for target 'game/GAME' failed make: *** [game/GAME] Error 2
Partager