Bonjour,
j'avais écrit il y a une semaine pour savoir si quelqu'un avait un makefile générique (sans lister tous les noms), qui compilait du C et du C++.
Je vous donne donc la solution que j'ai trouvé :
Il faut savoir que mes fichiers *.c sont dans un dossier Src, mes *.h dans un dossier Include, les objets dans Objet et le fichier binaire généré va dans Bin.
CC=gcc
CPP=g++
# Les différents répertoires contenant respectivement les fichiers : Sources *.c, Headers *.h, Objets *.o, l'exécutable
SRCDIR=Src
HEADDIR=Include
LIBDIR=Objet
BINDIR=Bin
# Les différentes options de compilations, soyons strictes !
CFLAGS= -I$(HEADDIR) -g -Wall -pedantic
# Les différents FrameWorks et bibliothèques pour le linkage
GLLIBS = #Les différentes lib et frameworks dont vous avez besoin
# L'exécutable
BIN=Caracterisation
# Où trouver les différents sources *.c qu'il faudra compiler pour créer les objets correspondants
SRC= $(wildcard $(SRCDIR)/*.c)
OBJ= $(SRC:$(SRCDIR)/%.c=$(LIBDIR)/%.o)
# Où trouver les différents sources *.cpp qu'il faudra compiler pour créer les objets correspondants
SRCPP= $(wildcard $(SRCDIR)/*.cpp)
OBJCPP= $(SRCPP:$(SRCDIR)/%.cpp=$(LIBDIR)/%.o)
all: $(BIN)
#Création de l'exécutable
Caracterisation: $(OBJ) $(OBJCPP)
$(CC) -o $(BINDIR)/$@ $^ $(CFLAGS) $(GLLIBS)
# Création des différents *.o à partir des *.c
$(LIBDIR)/%.o: $(SRCDIR)/%.c $(HEADDIR)/%.h
$(CC) -o $@ -c $< $(CFLAGS)
# Création des différents *.o à partir des *.cpp
$(LIBDIR)/%.o: $(SRCDIR)/%.cpp $(HEADDIR)/%.h
$(CPP) -o $@ -c $< $(CFLAGS)
Voilà pour ceux qui voudrait avoir un super makefile sans copier tout les noms des fichiers.
Bien évidemment, ce makefile fonctionne si vous avez qeu des .c ou .cpp.
@++
Partager