2015-10-29 15 views
5

Nella mia ricerca di un'applicazione senza avvisi, ho iniziato a usare -Werror per dire a gcc di trattare tutti gli avvertimenti come errori.Come disabilitare selettivamente -Werror usando #pragma con gcc

Questo è davvero molto utile in quanto a volte ho perso uno o due avvisi (gravi) in un output di grandi dimensioni. Purtroppo il mio progetto usa sqlite3 che contiene molti avvertimenti che, come dichiarato nel sito web sqlite, non possono essere eliminati (non vogliono essere rimossi).

Mi chiedevo se c'è un modo per usare #pragma che posso inserire nel file sqlite3.c per dire a gcc di smettere di trattare gli avvertimenti come errore solo per quel file.

ho provato con:

#pragma GCC diagnostic ignored "-Werror" 

senza successo Ho anche cercato di elencare uno per uno gli avvertimenti che causano problemi con:

#pragma GCC diagnostic ignored "-Wextra" 
#pragma GCC diagnostic ignored "-Wfloat-equal" 
#pragma GCC diagnostic ignored "-Wundef" 
... 

... purtroppo ci sono alcune avvertenze che non può essere disattivato completamente (ad esempio, l'inizializzazione scarta i qualificatori dal tipo di target puntatore).

Qualche idea/suggerimento?

risposta

2

È possibile aggiungere una regola aggiuntiva al Makefile per sqlite3.c che compila il file senza -Werror o senza alcun avviso. Con le consuete convenzioni, qualcosa del genere potrebbe essere sufficiente:

sqlite3.o: sqlite3.c 
    $(CC) $(CFLAGS) -w -c sqlite3.c 
+0

Ci ho pensato, purtroppo sto usando autoconf/automake ... ed è già abbastanza complicato. Gli avvisi (e -Werror) vengono selezionati durante ./configure in modo che possa essere abilitato quando si crea una versione di debug per un target host. Gli avvisi vengono quindi disattivati ​​durante la creazione del sistema di destinazione (Linux incorporato). – fabrizi0

+0

@ fabrizi0 Non dovrebbe essere un problema aggiungere una regola aggiuntiva per un file specifico con 'automake'. Tuttavia, non ho esperienza con esso, potrebbe essere necessario consultare la sua documentazione per scoprire come esattamente fare questo. Per favore considera anche taggando questo come [tag: automake] e modificando la tua domanda per indicare che vuoi un modo per disabilitare '-Werror' o fornire' -w' per un file se vuoi ricevere una risposta lungo quella linea . – fuz

+0

FUZxxl: sfortunatamente, come sospetto, automake non supporti flag per oggetto solo per flag di destinazione). Come accennato anche in questo post: http://stackoverflow.com/questions/149324/setting-per-file-flags-with-automake. Se non trovo un buon modo per farlo su un file, dovrò creare una lib sqlite e collegare la mia app contro di essa. – fabrizi0