Bonjour,
dans un makefile pour mingw, je fais quelque chose comme ceci
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
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 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
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
Comme si les lignes suivantes ne fonctionnaient pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 kernel:$(OBJECTS) data:$(OBJECTS) $(OBJECTS_DIR)/%.o: %.cpp %.h
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
4 kernel: OBJECTS = $(KERNEL_OBJECTS) kernel: OBJECTS_DIR = $(KERNEL_OBJECTS_DIR) data: OBJECTS = $(DATA_OBJECTS) data: OBJECTS_DIR = $(DATA_OBJECTS_DIR)
A noter par contre que dans tous les cas la ligne suivante fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 kernel:$(OBJECTS) data:$(OBJECTS) $(OBJECTS_DIR)/%.o: %.cpp %.h
Qu'est ce que je fais de mal ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part g++ -o $(OUTPUT) $(OBJECTS)
Flo.
Partager