2017-09-09 1 views
0

Je veux make supprimer tous les fichiers à l'exception des fichiers source et le fichier de règles de marque (le fichier nommé makefile), donc j'ajouté une règle fausse à la fin de mon makefile:Pourquoi se plaindre "Rien à faire pour 'nettoyer'"?

.PHONY:clean 

clean: 
    $(shell ls | grep -v "[.][ch]" | grep -v makefile | xargs rm) 

Ce fait ce que je intention. Mais make se plaint toujours

make: Nothing to be done for 'clean'. 

Après avoir couru make clean. Pourquoi ce message apparaît-il? Et comment puis-je le faire disparaître?

Répondre

1

L'utilisation de $(shell ...) est inutile. Il exécute la commande, puis la sortie est utilisée comme si elle faisait partie du Makefile. Il n'y a pas de sortie, donc la règle qui en résulte est:

clean: 

à savoir la liste réelle des commandes pour mettre à jour la cible propre est vide.

+0

Merci pour l'explication! J'ai enlevé le '$ (shell)' et cela a fonctionné. –