Salut,

J'écris souvent des petits programmes C/C++ contenant plusieurs fichiers sources.

J'ai cherché sur Internet un Makefile générique mais je n'ai pas trouvé exactement celui que je voulais. (et les Makefile génériques se font plutôt rare )

J'en est donc créé un que je colle ici, car je suis sur qu'il pourras intéresser d'autre personnes.

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
 
# Makefile Generique
 
EXT = c
CXX = gcc
EXEC = exe
 
CXXFLAGS = -Wall -W -pedantic 
LDFLAGS = 
 
 
OBJDIR = obj
SRC = $(wildcard *.$(EXT))
OBJ = $(SRC:.$(EXT)=.o)
OBJ := $(addprefix $(OBJDIR)/, $(OBJ))
 
all: $(EXEC)
 
$(EXEC): $(OBJ)
	@$(CXX) -o $@ $^ $(LDFLAGS)
 
$(OBJDIR)/%.o: %.$(EXT)
	@$(CXX) -o $@ -c $< $(CXXFLAGS)
 
clean:
	@rm -rf $(OBJDIR)/*.o
	@rm -f $(EXEC)
 
install: $(EXEC)
	@cp $(EXEC) /usr/bin/
L'utilisation est simple. On met le Makefile avec les sources.
Si c'est un projet C on utilise le Makefile tel quel.
Si c'est un projet C++ on met CXX = g++ et EXT a cpp ou cc suivant l'extension qu'on utilise.

Pour compiler :
Pour nettoyer les *.o et l'exécutable :
Pour installer (avec droit admin sous Linux) :
Ne pas oublier de créer un dossier "obj" dans le répertoire du Makefile (pour éviter d'avoir des *.o mélangé au code source ^^)

PS : Si vous voyez des améliorations possible, surtout n'hésitez pas !