Comment formater / changement QMake sortie de la construction
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
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)