46 lines
1.2 KiB
Makefile
46 lines
1.2 KiB
Makefile
# Makefile pour le projet Taquin - SAE S1.02 / S1.04
|
|
|
|
# Variables de compilation
|
|
CC = gcc
|
|
CFLAGS = -Wall -Wextra -std=c89
|
|
LDFLAGS = -lgraph
|
|
TARGET = taquin
|
|
|
|
# Liste de tous les fichiers sources (.c) - INCLUT TOUS LES MODULES
|
|
SRCS = src/main.c src/menu_view.c src/game_logic.c src/images.c src/utils.c src/game_view.c
|
|
|
|
# Liste de tous les fichiers objets (.o) correspondants
|
|
# (Transforme src/*.c en obj/*.o)
|
|
OBJS = $(patsubst src/%.c, obj/%.o, $(SRCS))
|
|
|
|
# ----------------------------------------------------------------------
|
|
# Cibles principales
|
|
# ----------------------------------------------------------------------
|
|
|
|
# Cible par défaut (crée l'exécutable)
|
|
all: dir $(TARGET)
|
|
|
|
# Crée le dossier obj/ si non existant
|
|
dir:
|
|
@mkdir -p obj
|
|
|
|
# Règle de liaison : crée l'exécutable taquin à partir de tous les objets
|
|
$(TARGET): $(OBJS)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
# Règle générique pour la compilation de tous les .c en .o
|
|
obj/%.o: src/%.c
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
# Exécute le programme
|
|
run: $(TARGET)
|
|
./$(TARGET)
|
|
|
|
# Nettoyage
|
|
clean:
|
|
rm -f $(EXEC) $(OBJS)
|
|
rmdir $(OBJ_DIR) 2>/dev/null || true
|
|
|
|
# Déclare les cibles qui ne correspondent pas à des fichiers
|
|
.PHONY: all clean run
|