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