Bonjour à tous,
j'aimerai écrire un Makefile pour mon projet. L'organisation est la suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
|-bin         //.o .a et .exe
|-src
|   |-module1 //.c
|   |...
|-inc          //.h
|-tst          //.c
|-Makefile
|...
Voici mon Makefile simplifié:
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
 
NAME	= exec
LIBNAME	= lib.a
CC	= gcc
CFLAGS	= -Wall -Wextra -Werror -I$(INCDIR)
SRCDIR	= src/subdir/
BINDIR	= bin/
INCDIR	= inc/
SRC	= $(wildcard $(SRCDIR)*.c)
OBJ	= $(addprefix $(BINDIR), $(notdir $(SRC:.c=.o)))
RM	= /bin/rm
 
$(NAME): $(BINDIR)$(NAME)
 
$(BINDIR)$(NAME): $(LIBNAME)
	$(CC) $(CFLAGS) -o $@ $(BINDIR)$<
 
$(LIBNAME): $(BINDIR)$(LIBNAME)
 
$(BINDIR)$(LIBNAME): $(OBJ)
	ar rc $@ $^
	ranlib $@
 
$(BINDIR)%.o: $(SRCDIR)%.c
	$(CC) $(CFLAGS) -c $< -o $@
 
all: $(NAME)
 
clean:
	$(RM) $(OBJ)
 
fclean: clean
	$(RM) $(BINDIR)$(LIBNAME)
	/bin/rm $(BINDIR)$(NAME)	#pourquoi $(RM) ne fonctionne pas ?
 
re: fclean all
 
.PHONY: all clean fclean re
J'aimerai avoir un fichier de test pour chaque module et une règle pour le construire indépendamment des autres, plus une règle NAME pour construire la librairie avec tous les modules.
Toute critique de l'organisation et du Makefile sont les bienvenues.
Et merci d'avance pour vos conseils pour l'écriture du Makefile.