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

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

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

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

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

0
Pietro 28 Окт 2019 в 14:36

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()
0
squareskittles 28 Окт 2019 в 12:47