2009-04-22 10 views
6

Estoy involucrado con un proyecto de software escrito en Qt y construido con qmake y gcc en Linux. Tenemos que vincular a una biblioteca de terceros que es de calidad bastante baja y arroja toneladas de advertencias. Me gustaría usar -W-Wall en nuestro código fuente, pero pase -w a la desagradable biblioteca de terceros para mantener la consola libre de ruido y desorden para que podamos enfocarnos en la calidad de nuestro código.Deshabilitar las advertencias condicionalmente con qmake/gcc?

En qmake, ¿hay alguna forma de agregar CFLAGS/CXXFLAGS condicionalmente a ciertos archivos y bibliotecas?

Respuesta

5

Jonathan, creo que el problema es cuando sus archivos fuente incluyen archivos de encabezado de bibliotecas de terceros y desea desactivar las advertencias para este último.

Kevin, creo que se puede utilizar para controlar pragmas advertencias: gcc diagnostic pragmas

Se podría añadir estos antes y después de cualquier #includes para bibliotecas 3 ª parte.

+0

Correcto, las advertencias provienen de los encabezados de terceros. Investigaré los pragmas, pero ¿hay alguna forma de que pueda inyectarlos solo en los encabezados de terceros, o tendré que editar sus encabezados? –

+0

Puede introducir envoltorios de encabezado para los encabezados de terceros. Un enfoque de fuerza bruta sería poner cualquier inclusión para un encabezado de un tercero en un solo encabezado, luego su aplicación simplemente incluye ese encabezado cuando sea necesario. P.ej. si su aplicación usa la biblioteca Zed, cree un encabezado zed.h que incluya todos los encabezados Zed. Luego puedes agregar los pragmas a zed.h. O simplemente revise su código y rodee cada #include con pragmas. –

0

Normalmente, crearía la biblioteca de terceros en un directorio separado de su propio código, por lo que tendría un archivo MAKE diferente, de modo que podría poner un conjunto diferente de indicadores para esa compilación.

Si ha mezclado el código de la biblioteca de terceros con su propio código, se ha configurado para una pesadilla de mantenimiento.

0

Kevin,

qmake CONFIG+=debug QMAKE_CXXFLAGS_WARN_ON=-w QMAKE_CFLAGS_WARN_ON=-w 

debe hacer (uso CONFIG + = emisión si lo desea ...)

3

Lo que si se incluye la biblioteca con -isystem.

En el archivo de proyecto ej .:

QMAKE_CXXFLAGS += -isystem /usr/local/boost_1_44_0 
0

Como Martin escribió añadir el directorio a través incluir

QMAKE_CXXFLAGS += -isystem ... 

suprime advertencias sólo en las respectivas cabeceras. No es necesario deshabilitar las advertencias de ningún archivo fuente de su proyecto (o incluso de todo el proyecto) o desordenar los archivos #pragmas o wrappers.

Tenga en cuenta que si usa QtCreator, (es decir, adicionalmente) desea agregar el directorio a INCLUDEPATH para que el indexador tome los encabezados.

Cuestiones relacionadas