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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
%.o: $(DRSC)/%.c
	$(CC) $(CFLAGS) -o $@ -c $<
Voici mon Makefile complet :

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 $<
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.

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.