2009-09-29 12 views
9

cómo puedo formatear la salida de producción (!! cambiando solo el archivo del proyecto qmake !!). Mis líneas de compilación continúan creciendo, y las advertencias/errores de una línea casi desaparecen entre ellos.Cómo formatear/cambiar la salida de compilación de qmake

Estoy pensando en algo así como

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

gracias, en lo que se refiere

Respuesta

16

En qmake, puede agregar una opción de configuración silenciosa:

CONFIG += silent 

(nota:.. Creo que es el comando Es algo similar a esto)

cual debería suprimir la mayor parte de la salida, y solo imprime líneas como "compilando ao", junto con sus advertencias y errores. Creo que esto es similar a la directiva make.SILENT. (creo que es la única ...)

Puede que tenga cuidado con esto, sin embargo, porque suprime una gran cantidad de información que a los analistas de errores les gusta usar. Por ejemplo, si está compilando con una configuración SUBDIRS, no se imprimirá cuando cambie a los diferentes directorios.

+0

impresionante. exactamente lo que necesitaba –

0

puede suprimir la copia impresa con '@' y el eco de lo que desea ver: Ejemplo

simple:

out.ext: $(OBJ) 
    @echo $(CC) -o out.ext 
    @$(CC) -o out.ext $(OBJ) $(OTHER_FLAGS_ETC) 
+0

Uh Quiero hacer magia sin usar y solo dentro de qmake. Perdón por la confusion. –

+1

OP pedido qmake –

5

Hay diferentes enfoques. Y puedes hacer que sean configurables.

  • Si agrega @ signo delante de la línea dentro de la regla, el propio comando no se imprimirán, pero su salida se.
  • Si agrega -Werror a su CFLAGS variable (usted tiene uno, ¿no es 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 a /dev/null, dejando solo la secuencia de error (esto no es para su caso particular, porque gcc generalmente no produce resultados pero puede ser útil para otros comandos).

Desafortunadamente, para qmake solo 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 pasará a otra pregunta tan pronto aparezca).

Para el uso habitual, puede usarlo todo, ¡puede hacerlo todo configurable! Aquí está el ejemplo:

trace?=short 

ifeq ($(trace),short) 
    [email protected] 
    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 así:

$ make trace=full 

se imprimirá todo. Si se invoca

$ make 

el valor short se utiliza por defecto (nota que el operador en lugar del habitual =?=!) Y las reglas se expandirán 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 dará todo lo que necesitar.

Este enfoque, con configuración, se utiliza en el código de producción.Por ejemplo, lo vi en los makefiles IcedTea de Ubuntu.

+0

Uh Quiero hacer la magia no digna y solo dentro de qmake. Perdón por la confusion. –

+0

+1: para -Werror. Esa es la mejor sugerencia de OMI y esto se puede hacer en su archivo de proyecto. – Troubadour

+0

@hydroes: edité mi respuesta para tratar de satisfacer sus necesidades –

Cuestiones relacionadas