Bonjour tout le monde,
J'ai un ptit problème avec Makefile que je suis en train d'écrire. J'ai essayé d'adopté une écriture plus généraliste, avec la gestions des répertoires etc...
Cependant, il ne semble pas prendre en compte la regle de substitution :
Voici mon Makefile complet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 %.o: $(DRSC)/%.c $(CC) $(CFLAGS) -o $@ -c $<
Volontairement, je ne gère pas encore les dépendances des fichiers .h avec les .o. Je m'occuperai de cela au moment ou il trouvera deja la règle.
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
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 ######## # Path # ######## DSRC = src DINC = inc DOBJ = obj DEXE = . DLIB = obj ############################## # Complete this to make it ! # ############################## NAME = accind_saisie SRC = accind_saisie.c accind_flot.c exit_if.c INCL = accind_flot.h exit_if.h ################ # Optional add # ################ IPATH = -I$(DINC) LPATH = -L$(DLIB) OBJOPT = -W -Wall -std=c99 EXEOPT = -W -Wall -std=c99 ##################### # Macro Definitions # ##################### CC = gcc CXX = g++ MAKE = make SHELL = /bin/sh OBJS = $(SRC:.c=.o) DOBJS = $(addprefix $(DOBJ)/, $(SRC:.c=.o)) RM = /bin/rm -f CFLAGS = $(OBJOPT) $(IPATH) LDFLAGS = $(EXEOPT) $(LPATH) ############################## # Basic Compile Instructions # ############################## all: $(NAME) $(NAME): $(OBJS) $(CC) $(DOBJS) $(LDFLAGS) -o $(NAME) clean: -$(RM) $(NAME) $(DOBJS) *~ %.o: $(DRSC)/%.c $(CC) $(CFLAGS) -o $@ -c $<
Voici le message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 kal@kal-desktop ~/work/accInd $ make make: *** Pas de règle pour fabriquer la cible « accind_saisie.o », nécessaire pour « accind_saisie ». Arrêt.
Partager