2009-06-04 16 views
5

Sono curioso di sapere se esiste un'opzione per disabilitare gli avvisi di gcc su un parametro che non è valido per la lingua da compilare.Disabilita avviso gcc per opzioni incompatibili

Es:

cc1: warning: command line option "-Wno-deprecated" is valid for C++/Java/ObjC++ but not for C 

Il nostro sistema di compilazione passa gli avvertimenti che abbiamo decise a livello globale attraverso una generazione. Abbiamo entrambi il codice C/C++ e gli avvertimenti diventano veramente fastidiosi quando si cerca di trovare avvisi reali.

Qualche suggerimento?

+0

IMHO questo è risolto al livello Make. Sai quali file di origine sono C e quali sono C++, giusto? –

risposta

2

Mi sembra che se ci fosse una tale opzione, ci dovrebbe essere un'ulteriore opzione per disattivare gli avvertimenti su tale opzione, e così via all'infinito. Quindi sospetto che non ci sia.

Avere le stesse opzioni per le versioni di lingue completamente diverse sembra comunque un po 'strano - avrei diverse opzioni definite come macro di makefile e usate in modo appropriato per obiettivi diversi.

+0

Mi rendo conto che sembra strano per un estraneo. Non sono responsabile del sistema di costruzione, sto solo cercando di ripulirlo. Non ho davvero il potere di fare la separazione dei due. –

0

Purtroppo gcc non ha la capacità di attivare o disattivare singoli avvertimenti. Alcuni avvisi sono di tipo speciale e possono essere impostati livelli di avviso, ma non c'è modo di disattivare gli avvisi di cui non ti interessa.

Voglio dire a chi interesserebbe mai la mancanza di una riga vuota alla fine del file? So che c'è una patch per spegnerla, ma costruire il mio compilatore dalla fonte è un po 'eccessivo.

Per il sistema di compilazione è possibile definire insiemi separati di avvisi per lingue diverse. Cosa succederà se hai bisogno di usare qualche altro compilatore, non gcc?

+0

Il nostro sistema di build supporta più compilatori, 3 in realtà. In 6 diverse architetture. GCC che compila il vecchio codice C è il caso limite e -> perché ho posto la mia domanda .. –

3

Per attivare specifiche avvertenze in GCC -Wxxxx e di disattivarli con -Wno-xxxx.

Dal GCC Warning Options:

È possibile richiedere molti avvertimenti specifici con opzioni a cominciare -W', for example -Wimplicit to request warnings on implicit declarations. Each of these specific warning options also has a negative form beginning -Wno-' per spegnere gli avvertimenti; per esempio, -Wno-implicito. Questo manuale elenca solo una delle due forme, a seconda di quale non sia l'impostazione predefinita.

Tuttavia @Neil ha ragione nel separare le opzioni per diverse lingue. Se utilizzi make puoi, ad es. metti tutte le opzioni C in CFLAGS e tutte le opzioni C++ in CCFLAGS.

+0

L'opzione di avviso sta generando l'avviso, non penso che -Wno * sia applicabile in questo caso. –

0

Se la compilazione dei file C come C++ è un'opzione per voi, -x c++.

+0

che è una pessima idea, porteranno in libstdC+++ per il collegamento che è * enorme * – ismail

2

Se si imposta la variabile CFLAGS avrà effetto solo sui file C, se si imposta la variabile CXXFLAGS avrà effetto solo sui file C++, quindi è possibile separare facilmente la logica.

+0

Dipende dal suo makefile –

+0

Effettivamente lo fa. – ismail

Problemi correlati