Mon makefile marche et ç'est étonnant ! - C++ - Programmation
Marsh Posté le 21-10-2004 à 17:24:00
Code :
|
D'autre part, gnu make a des règles implicites pour automatiquement compiler les fichiers C et C++ en utilisant les flags que tu as positionné:
http://www.gnu.org/software/make/m [...] tml#SEC105
Marsh Posté le 22-10-2004 à 14:37:43
Je rejoins Lam's sur le fait qu'il existe des régles inplicites donc c'est normal que le Makefile marche.
Par contre, la première régle donnée :
Code :
|
est à privilègier sur celle de Lam's, il me semble, car elle correspond à la nouvelle notation des patterns de make.
La deuxième donc est tolérée par compatibilité mais doit devenir obsoléte.
|
Marsh Posté le 19-02-2005 à 19:14:26
comment dans un makefile cacher les commandes exectuté ?
j'ai :
clean:
rm -f *.o
echo "Fichiers objets effacés"
rm -f prog
et c m affiche tout (les commandes et les résultats)
comment avoir que les résultats ?
Marsh Posté le 19-02-2005 à 20:26:04
Bonjour,
S'il te plait:
http://www.gnu.org/software/make/m [...] html#SEC53
Merci.
Au revoir.
Marsh Posté le 21-02-2005 à 08:27:46
Purée, un de mes anciens post qui ressort !
Je pense que Lam's t'a fait la même réponse que celle j'écrit, cad de rajouter un " @ " devant tes lignes pour éviter que les instructions ne s'affichent lorsqu'elles seront lancées.
Marsh Posté le 21-10-2004 à 17:18:22
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 ?