-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
73 lines (56 loc) · 1.76 KB
/
Makefile
File metadata and controls
73 lines (56 loc) · 1.76 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
NAME = so_long
CFLAGS = -Wall -Wextra -Werror -g -Iincludes
DIR_SRC = src
DIR_OBJ = obj
DIR_INCLUDES = includes
DIR_PRINTF = $(DIR_INCLUDES)/ft_printf
DIR_LIBFT = $(DIR_INCLUDES)/libft
DIR_GNL = $(DIR_INCLUDES)/gnl
DIR_MLX = $(DIR_INCLUDES)/mlx
SRC = $(addprefix $(DIR_SRC)/, so_long.c load.c utils.c key_hooks.c render.c check_map.c)
OBJ = $(addprefix $(DIR_OBJ)/, $(notdir $(SRC:.c=.o)))
PRINTF = $(DIR_PRINTF)/libftprintf.a
LIBFT = $(DIR_LIBFT)/libft.a
GNL = $(DIR_GNL)/gnl.a
MLX = $(DIR_MLX)/libmlx_Linux.a
MLX_FLAGS = -I$(DIR_MLX) -L$(DIR_MLX) -lmlx -lXext -lX11
all: $(NAME)
$(NAME): $(OBJ) $(PRINTF) $(LIBFT) $(GNL) $(MLX)
@echo "🔨 Compilation de $(NAME)..."
@cc $(OBJ) $(PRINTF) $(LIBFT) $(GNL) $(CFLAGS) $(MLX_FLAGS) -o $(NAME)
@echo "✅ Compilation réussie !"
$(DIR_OBJ)/%.o:$(DIR_SRC)/%.c | $(DIR_OBJ)
@echo "🔧 Compilation de $<..."
@cc $(CFLAGS) -c $< -o $@
$(DIR_OBJ):
mkdir -p $(DIR_OBJ)
$(PRINTF):
@echo "📦 Compilation de ft_printf..."
@make -s -C $(DIR_PRINTF)
$(LIBFT):
@echo "📦 Compilation de libft..."
@make -s -C $(DIR_LIBFT)
$(GNL):
@echo "📦 Compilation de GNL..."
@make -s -C $(DIR_GNL)
$(MLX):
@echo "📦 Compilation de la MiniLibX..."
@make -s -C $(DIR_MLX) > /dev/null 2>&1
# "> /dev/null 2>&1" pour pas avoir les msg degueu de compil
clean:
@echo "🧹 Nettoyage des fichiers .o ..."
@rm -rf $(DIR_OBJ)
@make -s -C $(DIR_PRINTF) clean
@make -s -C $(DIR_LIBFT) clean
@make -s -C $(DIR_GNL) clean
@make -s -C $(DIR_MLX) clean > /dev/null 2>&1
@echo "✅ Nettoyage terminé !"
fclean: clean
@echo "🗑️ Suppression de $(NAME)..."
@rm -f $(NAME)
@make -s -C $(DIR_PRINTF) fclean
@make -s -C $(DIR_LIBFT) fclean
@make -s -C $(DIR_GNL) fclean
@echo "✅ Tout a été supprimé !"
re: fclean all
.PHONY: all clean fclean re