3 votes

Contrôler la sortie d'une commande make pour être moins verbeuse, ne pas faire l'écho de chaque commande.

Actuellement, j'utilise un Makefile pour garder la trace de toutes les dépendances et de la copilation de mon projet. Le problème est que faire se contente d'afficher tout ce qu'il fait, ce qui rend difficile la détection (ou même la lecture) d'informations plus importantes (comme les avertissements du compilateur).

Existe-t-il un moyen de contrôler les informations qui s'affichent sur le terminal ? Je sais qu'il existe un -s option qui réduit au silence faire mais ce n'est pas ce que je veux. J'ai besoin de quelque chose d'un peu plus raffiné, peut-être en montrant la cible de compilation sans montrer la commande de compilation entière.

Y a-t-il un moyen de contrôler cela ?

Note : Il y a un question similaire concernant les commandes automake et autoconf. Mais je ne les utilise pas, et je cherche spécifiquement quelque chose sur make.

4voto

dmckee Points 50318

Eh bien, il y a les affaires habituelles

target: dependency1 dependency2
    @echo Making $@
    @$(CC) -o $@ $(OPTIONS) $^

En leader @ suppriment le comportement habituel de l'écho de l'action. sans en supprimant sa production .

La sortie de diverses actions peut être supprimée en la redirigeant vers /dev/null . N'oubliez pas de grader l'erreur standard également si vous voulez qu'une ligne soit vraiment silencieuse.

1voto

reinierpost Points 4221

La réponse standard d'Unix (`make`` est un outil Unix, après tout) :

make (...) | grep (whatever you want to see)

Pourquoi n'est-ce pas une solution appropriée ici ?

Vous pouvez également placer le filtrage dans le Makefile lui-même, par exemple en modifiant l'approche de la SHELL variable ou l'ajout d'une cible qui appelle $(MAKE) | grep .

L'idée principale est de permettre d'activer et de désactiver le filtrage à la guise de l'appelant.

1voto

earizon Points 39

(Trop tard, ajout juste pour les Googlers qui atterrissent ici) Cela fonctionne pour moi. Dans votre Makefile, vous pouvez contrôler la verbosité pour chaque commande en utilisant quelque chose comme :

BRIEF = CC HOSTCC HOSTLD AS YASM AR LD
SILENT = DEPCC DEPHOSTCC DEPAS DEPYASM RANLIB RM STRIP

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X