В программном проекте, над которым я работаю, мы используем некоторые сторонние библиотеки, которые, к сожалению, вызывают раздражающие предупреждения gcc. Мы стараемся очистить весь код предупреждений и хотим включить флаг GAR-предупреждения-как-ошибки (-Werror). Есть ли способ заставить эти сторонние генерируемые предупреждения, которые мы не можем исправить, исчезнуть?
Как устранить внешние предупреждения lib/третьих сторон в GCC
Ответ 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: Третий файл заголовка. Файл заголовка библиотеки, который вы не можете изменение может содержать конструкцию, которая вызывает (вероятно, доброкачественные) предупреждения. Затем оберните файл собственными версия, включающая оригинал заголовок и выборочно отключает шумные предупреждения только для этой области, а затем # включить свою обертку на протяжении всего вашего проекта.