У меня есть файл CMAKE со следующими флагами компиляции
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} \
-fPIC -Wall -pedantic -Wextra -Werror \
-Wno-missing-braces -Wno-unused-variable \
-Wno-ignored-qualifiers -fdiagnostics-color")
Я хочу опустить опцию -Wextra для отдельного заголовочного файла; /externals/include/foo.hpp (это сторонняя библиотека только для заголовков, которая выдает ошибку: [-Werror = unused-параметр] при компиляции).
Я пытался set_source_files_properties
вот так
set_source_files_properties(${EXTERNALS_SOURCE_DIR}/foo.hpp PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS_DEBUG} -Wno-extra")
, но не смог избавиться от ошибки компиляции.
Есть ли способ сделать это в CMAKE? или используя #pragmas в самом файле заголовка?
Спасибо.
РЕШЕНИЕ Вот как я избавился от ошибки:
- Создайте файл foo_wrapper.hpp.
- Добавьте _pragma, чтобы игнорировать флаг компиляции создателя проблемы
- Используйте заголовок оболочки везде в проекте вместо фактического заголовка.
`// В файле foo_wrapper.hpp:
_Pragma("GCC diagnostic push")
_Pragma("GCC diagnostic ignored \"-Wunused-parameter\"")
#include "foo.hpp"
_Pragma("GCC diagnostic pop")
`