Bonjour,

dans un makefile pour mingw, je fais quelque chose comme ceci

Code : 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
 
 
include source
 
OUTPUT        =
OBJECTS       =
OBJECTS_DIR = 
 
all: kernel data
 
kernel: OUTPUT        = $(KERNEL_OUTPUT)
kernel: OBJECTS       = $(KERNEL_OBJECTS)
kernel: OBJECTS_DIR = $(KERNEL_OBJECTS_DIR)
kernel:$(OBJECTS)
        g++ -o $(OUTPUT) $(OBJECTS)
 
data: OUTPUT        = $(DATA_OUTPUT)
data: OBJECTS       = $(DATA_OBJECTS)
data: OBJECTS_DIR = $(DATA_OBJECTS_DIR)
data:$(OBJECTS)
        g++ -o $(OUTPUT) $(OBJECTS)
 
$(OBJECTS_DIR)/%.o: %.cpp %.h	
	g++ -c -o $@ $<
Le fichier source contient les définitions pour les variables suivantes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
$(KERNEL_OUTPUT) = ../debug/kernel
$(KERNEL_OBJECTS) = ../debug/obj/Kfile1.o ../debug/obj/Kfile2.o etc...
$(KERNEL_OBJECTS_DIR) =  ../debug/obj
$(DATA_OUTPUT) = ../debug/data
$(DATA_OBJECTS) =  ../debug/obj/Dfile1.o ../debug/obj/Dfile2.o etc...
$(DATA_OBJECTS_DIR) =  ../debug/obj
Le problème est que dans les lignes suivantes les variables $(OBJECTS) et $(OBJECTS_DIR) semblent vides :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
kernel:$(OBJECTS)
data:$(OBJECTS)
$(OBJECTS_DIR)/%.o: %.cpp %.h
Comme si les lignes suivantes ne fonctionnaient pas

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
kernel: OBJECTS       = $(KERNEL_OBJECTS)
kernel: OBJECTS_DIR = $(KERNEL_OBJECTS_DIR)
data: OBJECTS       = $(DATA_OBJECTS)
data: OBJECTS_DIR = $(DATA_OBJECTS_DIR)
Par contre si je remplace $(OBJECTS) et $(OBJECTS_DIR) à la main dans les lignes suivantes ça fonctionne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
kernel:$(OBJECTS)
data:$(OBJECTS)
$(OBJECTS_DIR)/%.o: %.cpp %.h
A noter par contre que dans tous les cas la ligne suivante fonctionne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
g++ -o $(OUTPUT) $(OBJECTS)
Qu'est ce que je fais de mal ?

Flo.