Bonjour à tous,
j'aimerai écrire un Makefile pour mon projet. L'organisation est la suivante:
Voici mon Makefile simplifié:
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 |...
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.
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
Toute critique de l'organisation et du Makefile sont les bienvenues.
Et merci d'avance pour vos conseils pour l'écriture du Makefile.
Partager