Pregunta

Estoy involucrado con un proyecto de software escrito en QT y construido con Qmake y GCC en Linux. Tenemos que vincularnos a una biblioteca de terceros que sea de bastante baja calidad y arroje toneladas de advertencias. Me gustaría usar -W -Wall en nuestro código fuente, pero pasar a la desagradable biblioteca de terceros para mantener la consola libre de ruido y desorden para que podamos centrarnos en la calidad de nuestro código.

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

¿Fue útil?

Solución

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

Kevin, creo que puedes usar pragmas para controlar las advertencias: Pragmas de diagnóstico de GCC

Podrías agregarlos antes y después de cualquier #inclusión para libres de terceros.

Otros consejos

¿Qué pasa si incluye su biblioteca usando -isystem?

En el archivo del proyecto, por ejemplo,

QMAKE_CXXFLAGS += -isystem /usr/local/boost_1_44_0

Kevin,

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

Debe hacer (usar config+= versión si lo desea ...)

Normalmente, construiría la biblioteca de terceros en un directorio separado a partir de su propio código, por lo que tendría un makile diferente, por lo que podría poner un conjunto diferente de banderas para esa compilación.

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

Como Martin escribió agregando el directorio de incluir a través de

QMAKE_CXXFLAGS += -isystem ...

suprime las advertencias solo en los respectivos encabezados. No es necesario deshabilitar las advertencias para ningún archivo fuente de su proyecto (o incluso en todo el proyecto) o meterse con los archivos #Pragmas o Wrappers.

Tenga en cuenta que si está utilizando QtCreator, todavía (es decir, es decir), querrá agregar el directorio a INCLUDEPATH Entonces el indexador recoge los encabezados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top