Je suis sous Ubuntu 10.04. Chaque fois que je cours en mode make clean
, je reçois ceci:
make: *** Aucune règle pour rendre la cible «propre». Arrêtez.
Voici mon makefile:
CC = gcc CFLAGS = -g -pedantic -O0 -std=gnu99 -m32 -Wall PROGRAMS = digitreversal all : $(PROGRAMS) digitreversal : digitreversal.o $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) .PHONY: clean clean: @rm -f $(PROGRAMS) *.o core
Des idées pourquoi son ne fonctionne pas?
EDIT: Il semble que faire:
make -f Makefile.txt clean
travaux. Maintenant: y a-t-il un paramètre à changer pour que je n’ai pas à faire le -f Makefile.txt
chaque fois?
Il semble que le nom de votre makefile ne soit pas ‘Makefile’ ou ‘Makefile’. Dans le cas contraire, dites ‘abc’ essayez de lancer ‘make -f abc clean’
Je suppose que vous l’avez compris maintenant. La réponse est cachée dans votre premier courrier lui-même.
La commande make
par défaut le fichier makefile
, le fichier Makefile
et le fichier GNUMakefile
dans le fichier d’entrée. Le fichier Makefile.txt
dans votre dossier. Supprimez simplement l’extension de fichier ( .txt
) et cela devrait fonctionner.
Vérifiez que le fichier s’appelle GNUMakefile, Makefile ou Makefile.
S’il s’appelle autre chose (et que vous ne voulez pas le renommer), essayez:
make -f othermakefilename clean
Cela fonctionne pour moi. Êtes-vous sûr que vous indentez avec des tabs?
CC = gcc CFLAGS = -g -pedantic -O0 -std=gnu99 -m32 -Wall PROGRAMS = digitreversal all : $(PROGRAMS) digitreversal : digitreversal.o [tab]$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) .PHONY: clean clean: [tab]@rm -f $(PROGRAMS) *.o core
Vous êtes victime des erreurs les plus courantes dans Makefiles. Vous devez toujours mettre un onglet au début de chaque commande. Vous avez mis des espaces avant les lignes @rm -f $(PROGRAMS) *.o core
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
et @rm -f $(PROGRAMS) *.o core
. Si vous les remplacez par un onglet, tout ira bien.
Cependant, cette erreur n’entraîne pas l’erreur “Aucune règle à définir sur la cible …”. Cela signifie probablement que votre problème se situe au-delà de votre Makefile. Avez-vous vérifié que c’est le bon Makefile, comme dans celui que vous voulez spécifier vos commandes? Essayez explicitement de le passer en tant que paramètre pour make, make -f Makefile
et make -f Makefile
-nous ce qui se passe.