Подтвердить что ты не робот

Как устранить внешние предупреждения lib/третьих сторон в GCC

В программном проекте, над которым я работаю, мы используем некоторые сторонние библиотеки, которые, к сожалению, вызывают раздражающие предупреждения gcc. Мы стараемся очистить весь код предупреждений и хотим включить флаг GAR-предупреждения-как-ошибки (-Werror). Есть ли способ заставить эти сторонние генерируемые предупреждения, которые мы не можем исправить, исчезнуть?

4b9b3361

Ответ 1

Я предполагаю, что вы говорите о предупреждениях, поступающих из заголовков сторонних библиотек.

Специальным решением GCC будет создание другого файла заголовка оболочки, который имеет по существу две строки:

#pragma GCC system_header
#include "real_3rd_party_header.h"

И используйте оболочку вместо исходного 3-го заголовка.

Отметьте другой ответ SO, в котором описывается прагма. По сути, он указывает GCC, что это (с рекурсивно включенными файлами) является системным заголовком, и никакие предупреждающие сообщения не должны генерироваться.

В противном случае я не знаю, как можно отключить предупреждения, поступающие от стороннего кода. За исключением, конечно, грубой силы: в системе сборки настройте файлы, которые будут созданы с предупреждениями.

Ответ 2

Используйте -isystem Пример:

gcc -I./src/ -isystem /usr/include/boost/ -c file.c -o obj/file.o

С -системой NO предупреждение о повышении: D

Ответ 3

Если вы используете CMake, вы можете достичь этого, добавив SYSTEM в include_directories:

include_directories(SYSTEM "${LIB_DIR}/Include")
                    ^^^^^^

Ответ 4

http://www.artima.com/cppsource/codestandards.html

Пример 1: Третий файл заголовка. Файл заголовка библиотеки, который вы не можете изменение может содержать конструкцию, которая вызывает (вероятно, доброкачественные) предупреждения. Затем оберните файл собственными версия, включающая оригинал заголовок и выборочно отключает шумные предупреждения только для этой области, а затем # включить свою обертку на протяжении всего вашего проекта.