Re-Bonjour,
Je progresse dans ma découverte des makefile et je suis parvenu à l'écriture de ce fichier :
CPP = g++
CPPFLAGS = -ansi -pedantic
EXEC = main
SRC=$(wildcard *.C)
OBJ=$(SRC:.C=.o)
main: $(OBJ)
$(CPP) -o $@ $^
Je me suis placé dans un répertoire contenant juste un fichier main.C. Bizarrement, ce makefile fonctionne alors qu'il ne devrait pas. En effet, aucune ligne ne précise comment créer le fichier main.o.
En fait, au lancement, la commande
g++ -ansi -pedantic -c -o main.o main.C
s'éxécute et crée le fichier main.o, avant l'édition de lien.
Pourquoi cette commande se lance t'elle alors qu'elle n'est pas donnée dans le makefile ?
D'autre part, si je rajoute une ligne pour créer main.o du type :
%.o: %.C
$(CPP) -O -o $@ -c $^
elle ne s'éxécute pas et la création du fichier main.o se fait de manière identique par :
g++ -ansi -pedantic -c -o main.o main.C
Comment forcer la création du fichier main.o par ces deux lignes suppléméntaires dans mon makefile ?