Come ignorare gli errori pedanti del compilatore gcc nelle intestazioni delle librerie esterne?



Answers

L'utilizzo dell'opzione -Wsystem-headers con gcc stamperà i messaggi di avviso associati alle intestazioni di sistema, che normalmente vengono soppresse. Tuttavia, stai cercando di fare in modo che gcc tratti questi file come header di sistema, quindi potresti provare a passare "-isystem / usr / local / ffmpeg" (o ovunque tu abbia installato quel pacchetto) per fare in modo che gcc ignori gli errori dai file inclusi in anche queste directory.

Question

Di recente ho aggiunto -pedantic e -pedantic-errors alle mie opzioni di compilazione di gcc per aiutare a ripulire il mio codice multipiattaforma. Tutto andava bene finché non trova errori nei file di intestazione inclusi esterni. C'è un modo per disattivare questo controllo degli errori nei file di intestazione esterni IE:

Continua a cercare file inclusi in questo modo:

#include "myheader.h"

Smetti di controllare la presenza di file come questo:

#include <externalheader.h>

Ecco gli errori che sto ottenendo:

g++ -Wall -Wextra -Wno-long-long -Wno-unused-parameter -pedantic --pedantic-errors
-O3 -D_FILE_OFFSET_BITS=64 -DMINGW -I"freetype/include" -I"jpeg" -I"lpng128" -I"zlib"
-I"mysql/include" -I"ffmpeg/libswscale" -I"ffmpeg/libavformat" -I"ffmpeg/libavcodec"
-I"ffmpeg/libavutil" -o omingwd/kguimovie.o -c kguimovie.cpp

In file included from ffmpeg/libavutil/avutil.h:41,
             from ffmpeg/libavcodec/avcodec.h:30,
             from kguimovie.cpp:44:
ffmpeg/libavutil/mathematics.h:32: error: comma at end of enumerator list
In file included from ffmpeg/libavcodec/avcodec.h:30,
             from kguimovie.cpp:44:
ffmpeg/libavutil/avutil.h:110: error: comma at end of enumerator list
In file included from kguimovie.cpp:44:
ffmpeg/libavcodec/avcodec.h:277: error: comma at end of enumerator list
ffmpeg/libavcodec/avcodec.h:303: error: comma at end of enumerator list
ffmpeg/libavcodec/avcodec.h:334: error: comma at end of enumerator list
ffmpeg/libavcodec/avcodec.h:345: error: comma at end of enumerator list
ffmpeg/libavcodec/avcodec.h:2249: warning: `ImgReSampleContext' is deprecated
(declared at ffmpeg/libavcodec/avcodec.h:2243)
ffmpeg/libavcodec/avcodec.h:2259: warning: `ImgReSampleContext' is deprecated
(declared at ffmpeg/libavcodec/avcodec.h:2243)
In file included from kguimovie.cpp:45:
ffmpeg/libavformat/avformat.h:262: error: comma at end of enumerator list
In file included from ffmpeg/libavformat/rtsp.h:26,
             from ffmpeg/libavformat/avformat.h:465,
             from kguimovie.cpp:45:
ffmpeg/libavformat/rtspcodes.h:38: error: comma at end of enumerator list
In file included from ffmpeg/libavformat/avformat.h:465,
             from kguimovie.cpp:45:
ffmpeg/libavformat/rtsp.h:32: error: comma at end of enumerator list
ffmpeg/libavformat/rtsp.h:69: error: comma at end of enumerator list



Un'idea che mi viene in mente (non so se c'è un parametro 'out of the box' per questo):

Prepara uno script che prenderà l'output del tuo compilatore e rimuovi tutte le righe che contengono intestazioni che non si trovano in un elenco specifico ( le intestazioni).

Non dovrebbe essere così difficile farlo in questo modo.




Links