Domanda

Sono coinvolto in un progetto software scritto in QT e costruito con Qmake e GCC su Linux. Dobbiamo collegarci a una biblioteca di terze parti che è di qualità abbastanza bassa e lancia tonnellate di avvertimenti. Vorrei usare -w -wall sul nostro codice sorgente, ma passare -w alla brutta libreria di terze parti per mantenere la console priva di rumore e disordine in modo da poter concentrarci sulla qualità del nostro codice.

In Qmake, esiste un modo per aggiungere condizionalmente CFLAGS/CXXFLAGS a determinati file e librerie?

È stato utile?

Soluzione

Jonathan, penso che il problema sia dove i tuoi file di origine includono file di intestazione delle librerie di terze parti e si desidera spegnere gli avvertimenti per quest'ultimo.

Kevin, penso che puoi usare Pragmas per controllare gli avvisi: Pragmi diagnostici GCC

Potresti aggiungerli prima e dopo ogni #include per libri di terze parti.

Altri suggerimenti

Cosa succede se includi la tua libreria usando -System.

Nel file di progetto ad esempio:

QMAKE_CXXFLAGS += -isystem /usr/local/boost_1_44_0

Kevin,

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

dovrebbe fare (usa config+= rilascio se si desidera ...)

Normalmente, costruiresti la libreria di terze parti in una directory separata dal tuo codice, quindi avresti un makefile diverso per questo, in modo da poter mettere un diverso set di bandiere per quella compilation.

Se hai mescolato il codice della libreria di terze parti con il tuo codice, ti sei preparato per un incubo di manutenzione.

Come ha scritto Martin aggiungendo la directory Include tramite

QMAKE_CXXFLAGS += -isystem ...

sopprime gli avvertimenti solo nelle rispettive intestazioni. Non è necessario disabilitare gli avvisi per qualsiasi file di origine del tuo progetto (o persino a livello di progetto) o disastrosi con i file #pragmas o wrapper.

Tieni presente che se stai usando QtCreator ti vorrai ancora (cioè vorrai aggiungere la directory a INCLUDEPATH Quindi l'indicizzatore raccoglie le intestazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top