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 ?