Cómo formatear / cambiar QMake construir de salida
Pregunta
¿Cómo puedo formatear la salida de make ( !! cambiando sólo el archivo de proyecto qmake !! ). Mis líneas de compilación siguen creciendo, y los de una línea-advertencias / errores casi desaparecer entre ellos.
Estoy pensando en algo así como
$(CC) in.ext -o out.ext
gracias, en lo que se refiere
Solución
En qmake
, puede agregar una opción de configuración silenciosa:
CONFIG += silent
(Nota:.. Creo que es el comando Es algo similar a esto)
Lo cual debería suprimir la mayor parte de la salida, y sólo las líneas de impresión como "compilar a.o", junto con sus advertencias y errores. Creo que esto es similar a la directiva de make
.SILENT.
(creo que esa es la que ...)
Es posible que desee tener cuidado con esto, sin embargo, ya que suprime una gran cantidad de información que los analizadores de error les gusta usar. Por ejemplo, si está compilando con una configuración SUBDIRS
, no va a imprimir cuando se cambia a los diferentes directorios.
Otros consejos
Existen diferentes enfoques. Y usted puede hacer que se puede configurar.
- Si añadir signo
@
en la parte delantera de la línea dentro de la regla, el propio comando no se imprimirá, pero su producción lo hará. - Si Añadir
-Werror
a suCFLAGS
variable (usted tiene uno, no se trata de una práctica común?!), Que sin duda no se pierda ninguna advertencia - la acumulación se detendrá después de la primera. - Puede redirigir la salida estándar de su comando para
/dev/null
, dejando solo flujo de error (esto no es para su caso particular, porque gcc por lo general no produce salida, pero puede ser útil para otros comandos) .
Desafortunadamente, para qmake
sólo se aplica el segundo enfoque. Añadir al archivo de proyecto:
QMAKE_CFLAGS+=-Werror
QMAKE_CXXFLAGS+=-Werror
Y los makefiles generados va a utilizar estas banderas cuando invocan compilador, por lo que la construcción se detendrá en cada advertencia.
(esta sección se moverá a otra pregunta aparece tan pronto uno).
Para hacer habitual que se puede utilizar todo - usted puede hacer que todo configurable! Aquí está el ejemplo:
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)
Por lo tanto, si se invoca make
como esto:
$ make trace=full
se imprimirá todo. Si se invoca
$ make
el valor short
se utiliza por defecto (nota al operador ?=
en lugar de =
habitual!) Y las reglas se expandirá a dicha versión
out.ext: out.o
@echo cc -o out.ext 1>/dev/null
@cc -o out.ext out.o 1>/dev/null
lo que le dará todo lo que necesita.
Tal enfoque, con la configuración, se utiliza en el código de producción. Por ejemplo, lo vi en archivos make IcedTea de Ubuntu.
Puede suprimir la copia impresa con '@' y el eco lo que quiere ver:
simple ejemplo:
out.ext: $(OBJ)
@echo $(CC) -o out.ext
@$(CC) -o out.ext $(OBJ) $(OTHER_FLAGS_ETC)