Guide Complet des Makefiles
1. Qu’est-ce qu’un Makefile ?
Un Makefile est un fichier utilisé pour automatiser la compilation et l'exécution de projets. Il contient
des règles décrivant comment et quand construire chaque partie du projet.
2. Structure d’une règle
Une règle est composée d’une cible, de dépendances et d’une commande :
cible: dépendances
commande
3. Concepts essentiels
Voici les éléments fondamentaux à connaître pour maîtriser Make :
• Make reconstruit uniquement ce qui a changé (basé sur les timestamps).
• Les variables rendent le Makefile plus flexible.
• Les patrons (% rules) automatisent la compilation de nombreux fichiers.
4. Les Pattern Rules (%)
Elles permettent d'écrire des règles génériques comme :
%.o: %.c
gcc -c $< -o $@
5. Makefile pour C
Voici un Makefile propre et complet :
CC = gcc
CFLAGS = -Wall -Wextra -g
SRC = main.c utils.c
OBJ = $(SRC:.c=.o)
EXEC = programme
$(EXEC): $(OBJ)
$(CC) $(OBJ) -o $(EXEC)
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJ)
fclean: clean
rm -f $(EXEC)
re: fclean $(EXEC)
6. Makefile pour Java
Un Makefile Java compile les .java en .class et exécute la classe principale.
SRC_DIR = src
BIN_DIR = bin
MAIN_CLASS = [Link]
SOURCES = $(shell find $(SRC_DIR) -name "*.java")
compile:
mkdir -p $(BIN_DIR)
javac -d $(BIN_DIR) $(SOURCES)
run: compile
java -cp $(BIN_DIR) $(MAIN_CLASS)
clean:
rm -rf $(BIN_DIR)/*
7. Makefile pour Python
Python ne nécessite pas de compilation mais Make peut automatiser l'exécution.
run:
python3 [Link]
test:
python3 -m unittest
clean:
find . -name "__pycache__" -exec rm -r {} +
8. À retenir absolument
• structure des règles
• variables
• substitutions (.c → .o)
• patterns (%.o)
• $@, $<, $^
• .PHONY
• Make reconstruit seulement ce qui a changé