Comme le problème ne venais pas du Shell, je reprends ici la discussion intitullée « Problème lancement Makefile dans Shell ».
J'ai un Makefile qui ne fonctionne pas !
En premier lieu, mon arborescence disque :
Code du projet « sample » : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 sample/ |__ src/ | |__ liste.c | |__ main1.c |__ inc/ | |__ liste.h |__ Makefile
Puis les sources :
Code du fichier « liste.c » : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #include <stdio.h> void world (void) { printf (" World\n"); }
Code du fichier « main1.c » : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #include <stdio.h> #include "liste.h" int main (void) { printf ("Hello "); world (); return 0; }
Code du fichier « liste.h » : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 void world (void);
Code du fichier « 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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 # Makefile # Répertoires de travail : SRC = ./src INC = ./inc OBJ = ./obj LIB = ./lib BIN = ./bin # Nom des fichiers à générer OBJ_FILES = $(OBJ)/liste.o $(OBJ)/main1.o LIB_FILES = $(LIB)/liste.a EXE_FILES = $(BIN)/main1.exe # Compilateur C Ansi CC = @gcc AR = @ar -r RM_FILES = @rm -f $(OBJ)/* $(LIB)/* $(BIN)/* # */ RM_FOLDERS = @rmdir $(OBJ)/ $(LIB)/ $(BIN)/ ECHO = @echo # Flags de compilation / débug / warning CFLAGS = -Wall -W -pedantic -pedantic-errors -ansi -O2 -I$(INC) # Crée les dossiers et compile les fichiers sources nécessaires pour créer l'exécutable all: $(OBJ) $(LIB) $(BIN) $(OBJ_FILES) $(LIB_FILES) $(EXE_FILES) $(OBJ) $(LIB) $(BIN): @mkdir $@ $(OBJ)/%.o : $(SRC)/%.c $(CC) $(CFLAGS) -c $< -o $@ $(LIB)/%.a : $(OBJ)/%.o $(AR) $@ $< $(BIN)/%.exe : $(OBJ)/%.o $(CC) -o $@ $< $(LIB_FILES) $(ECHO) " ----- Programme compilé ----- " # Lance le programme start: all $(ECHO) " ----- Lancement du programme ----- " @$(EXE_FILES) # Détruit tout les fichiers créés par all clean: $(RM_FILES) $(RM_FOLDERS) $(ECHO) " ----- Environnement nettoyé ----- "
Et voici les résultats sous AIX :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $ make all make: 1254-002 Cannot find a rule to create target ./obj/liste.o from dependencies. Stop. $
Je ne vois vraiment pas pourquoi ce Makefile ne fonctionne pas![]()
Qui peut m'aider ?
Partager