J'ai écrit un programme pour une affectation qui est censée imprimer sa sortie sur stdout. La spécification d'affectation nécessite la création d'un Makefile qui, lorsqu'il est appelé, make run > outputFile
doit exécuter le programme et écrire la sortie dans un fichier, qui a une empreinte SHA1 identique à celle donnée dans la spécification.
Mon problème est que mon makefile:
...
run:
java myprogram
imprime également la commande qui exécute mon programme (par exemple java myprogram) dans le fichier de sortie, de sorte que mon fichier inclut cette ligne supplémentaire causant une erreur d'empreinte digitale.
Existe-t-il un moyen d'exécuter une commande sans que l'invocation de la commande ne fasse écho à la ligne de commande?
make -s
fait cela, et IMHO est une bien meilleure solution ici de toute façon. Il a récemment été publié en tant que réponse distincte à cette question.Encore plus simple, utilisez
make -s
(mode silencieux)!la source
@
commandes rend le débogage difficile et ajoute beaucoup de désordre..SILENT:
cible. Voir make.mad-scientist.net/managing-recipe-echoing-Wall
il les imprime toujours. Bien sûr, pourquoi l'utiliseriez-s
-vous si vous souhaitez également voir les avertissements?Vous pouvez aussi utiliser
.SILENT
Dans ce cas,
make hi
émettra la commande, maismake run
ne sortira pas.la source
L'effet de précéder la commande avec un
@
peut être étendu à une section en étendant la commande à l'aide d'une barre oblique inverse de fin sur la ligne. Si une.PHONY
commande est souhaitée pour supprimer la sortie, on peut commencer la section par:la source