Question

comment puis-je formater la sortie de make ( !! en changeant seulement le fichier de projet qmake !! ). Mes lignes de compilation continuent de croître, et celui-ligne-avertissements / erreurs disparaissent presque entre eux.

Je pense à quelque chose comme

$(CC) in.ext -o out.ext

merci en ce qui concerne

Était-ce utile?

La solution

Dans qmake, vous pouvez ajouter une option de configuration silencieuse:

CONFIG += silent

(ndlr:.. Je pense que ce la commande C'est quelque chose de similaire à ce sujet)

Ce qui devrait supprimer la plupart de la production, et seulement des lignes d'impression comme la « compilation a.o », ainsi que vos avertissements et les erreurs. Je crois que ce qui est similaire à la directive make de .SILENT. (je pense que c'est un ...)

Vous voudrez peut-être prudent avec cela, cependant, car il supprime beaucoup d'informations que parseurs d'erreur à utiliser. Par exemple, si vous compilez avec une configuration SUBDIRS, il ne sera pas imprimé quand il change les différents répertoires.

Autres conseils

Il existe différentes approches. Et vous pouvez les faire configurable.

  • Si vous Ajouter signe @ devant la ligne dans la règle, la commande elle-même ne sera pas imprimé, mais sa production sera.
  • Si vous ajouter à votre -Werror CFLAGS variable (vous en avez un, ne pas C'est une pratique courante!), Vous serez certainement pas manquer aucun avertissement - la construction arrêtera après le premier.
  • Vous pouvez rediriger la sortie standard de votre commande à /dev/null , ne laissant que flux d'erreur (ce n'est pas pour votre cas particulier, car gcc habituellement ne donne pas de sortie, mais peut être utile pour d'autres commandes) .

Malheureusement, pour qmake la deuxième approche applique. Ajouter à votre dossier de projet:

QMAKE_CFLAGS+=-Werror
QMAKE_CXXFLAGS+=-Werror

Et les makefiles générés utilisera ces drapeaux quand ils invoquent le compilateur, de sorte que la construction s'arrête à chaque avertissement.


(cette partie est déplacée à une autre question dès l'une apparaît).

Pour d'habitude, vous pouvez faire utiliser tout - vous pouvez faire tout configurable! Voici l'exemple:

trace?=short

ifeq ($(trace),short)
  suppress_echo=@
  redirect_to_null=1>/dev/null

else ifeq ($(trace),full)
  suppress_echo=
  redirect_to_null=

else ifeq ($(trace),werror)
  CFLAGS+=-Werror

else
  $(error Incorrect trace type "$(trace)"!)
endif

# Thanks to Martin York for the source of this copy-pasted code
out.ext:  $(OBJ)
    @echo $(CC) $(CFLAGS) -o out.ext $(redirect_to_null)
    $(suppress_echo)$(CC) $(CFLAGS) -o out.ext $(OBJ) $(redirect_to_null)

Alors, si vous invoquez make comme ceci:

$ make trace=full

il imprimera tout. Si vous appelez

$ make

la valeur short sera utilisé par défaut (notez l'opérateur ?= au lieu de = d'habitude!) Et les règles élargira pour cette version

out.ext: out.o
    @echo cc  -o out.ext 1>/dev/null
    @cc  -o out.ext out.o 1>/dev/null

ce qui donnera autant que vous avez besoin.

Une telle approche, avec la configuration, est utilisée dans le code de production. Par exemple, je l'ai vu dans les makefiles IcedTea de Ubuntu.

Vous pouvez supprimer l'impression avec « @ » et l'écho ce que vous voulez voir:

Exemple simple:

out.ext:  $(OBJ)
    @echo $(CC) -o out.ext
    @$(CC) -o out.ext $(OBJ) $(OTHER_FLAGS_ETC)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top