Как установить разные уровни предупреждений для разных файлов?

Хотя я могу установить разные уровни предупреждений в зависимости от компилятора, например:

if(MSVC)
  target_compile_options(${TARGET_NAME} PRIVATE /W4 /WX)
else()
  target_compile_options(${TARGET_NAME} PRIVATE -Wall -Wextra -pedantic -Werror)
endif()

Я не могу установить их файл за файлом.

В том же каталоге у меня есть набор файлов, имена которых находятся в ${SRC_WARN} Переменная CMake, для которой требуется другой уровень предупреждения по сравнению с другими.

Есть ли способ указать такое условие с помощью target_compile_options?

1 ответ

Решение

Вы можете установить параметры компиляции (COMPILE_OPTIONS) для одного файла (или группы файлов), используя set_source_files_properties(). Вы можете изменитьCOMPILE_OPTIONS для тебя ${SRC_WARN} исходные файлы, добавив к существующему коду CMake:

if(MSVC)
  target_compile_options(${TARGET_NAME} PRIVATE /W4 /WX)
  # Change these files to have warning level 2.
  set_source_files_properties(${SRC_WARN} PROPERTIES COMPILE_OPTIONS /W2)
else()
  target_compile_options(${TARGET_NAME} PRIVATE -Wall -Wextra -pedantic -Werror)
  # Change these files to inhibit all warnings.
  set_source_files_properties(${SRC_WARN} PROPERTIES COMPILE_OPTIONS -w)
endif()
Другие вопросы по тегам