Il ne semble pas être possible d'appeler des commandes système Windows (E.G. Del, Déplacer, etc.) à l'aide de GNU. J'essaie de créer un makefile qui ne s'appuie pas sur l'utilisateur ayant des outils supplémentaires (par exemple, Lorsque la règle suivante est exécutée, une erreur est signalée. rm.exe code> de cygwin) installé.
Del: Commande non trouvée CODE>: P>
clean:
cmd /C del *.o
7 Réponses :
del code> est une commande intégrée de
cmd.exe code> (ainsi que précédemment
command.com.com code>). Votre commande
cmd / c del * .o code> devrait fonctionner, s'il commence une nouvelle invite de commande, je suppose que cmd peut-être peut-être être une enveloppe. Avez-vous essayé d'appeler CMD avec son chemin complet (E.G. C: /Windows/system32/cmd.exe)? P>
Il ne démarre pas une nouvelle fenêtre d'invite de commande, elle imprime la bannière MS Copyright, puis s'arrête. L'utilisation du chemin complet n'a aucun effet.
Essayez de cibler la commande (c'est-à-dire la commande cmd / c "del * .o") - si cela ne fonctionne pas, essayez cmd / k pour voir quelle erreur est (/ k gardera la fenêtre CMD autour de vous le fermer)
Fait intéressant, il fonctionne avec cmd / k del * .o code> Cependant, il vous laisse dans la nouvelle session et continuera uniquement avec le maquillage lorsque vous tapez
Quitter code>. Citant ne semble pas faire de différence.
Il semble que le commutateur / C CODE> doit être échappé car un
/ code> est interprété comme un chemin dans GNU. Le suivant fonctionne comme prévu:
La réponse de Tom Longridge était proche de la vérité pour moi, mais l'évasion devait être faite à l'aide d'une barre oblique inverse avant la barre oblique de la machine d'affaires de Windows Vista, j'avais besoin de cela pour:
RM=cmd \/C del
Une autre solution consiste à créer un fichier puis le fichier Ceci nettoie le maquillage, mais peut encombrer légèrement votre répertoire de construction. P> P> del.bat code> contenant:
makefile code> peut simplement contenir p>
Parce que les systèmes basés sur DOS ont deux commandes différentes pour supprimer des fichiers et des répertoires, je constate que disposer de deux définitions différentes fonctionne le meilleur:
m'est arrivé aussi. En haut de votre maquillage, ajoutez: puisque vous compilez sur Windows, sélectionnez "CMD" comme coquille par défaut. Cette
est important car GNU FAIT recherchera le chemin d'accès d'une coquille Linux / Unix comme une coque et s'il en trouve un, il l'utilisera à la place. C'est le cas lorsque Cygwin est installé. L'effet secondaire de ce comportement est que les commandes comme «del» et «écho» ne sont pas trouvées. Si nous disons à GNU, il faut utiliser "CMD" comme shell, alors "del" et tel sera disponible. P> p>
Je viens de terminer cela. Je ne sais pas si les choses ont changé dans DOS / Windows, mais c'était comme ça qu'il devait être formaté avec les versions actuelles.
OBJ=o BIN=bin clean: cmd /C del $(OBJ)\\*.o cmd /C del $(BIN)\\*.exe
quelle version de Windows utilisez-vous?