Игнорировать/показывать только ошибки/предупреждения из определенного каталога с помощью CMake

Основной вопрос: Есть ли конфигурация cmake для отображения или игнорирования предупреждений/ошибок компилятора только из определенного каталога?

альтернативное решение: Как я могу переключить это в QtCreator?

фон/мотивация: Я работаю над большим проектом CMake и хочу сосредоточиться на предупреждениях и ошибках только из моего подпроекта. Я работаю с QtCreator, и это раздражает меня искать "мои" ошибки/предупреждения под кучей иностранных.

Ответ 1

Вы можете установить параметры предупреждения компилятора в CMake как минимум для определенных целевых или определенных файлов.

# For target
set_target_properties(your_project_name PROPERTIES COMPILE_FLAGS "...")

# For files
set_source_files_properties(
  ${list_of_your_files}
  PROPERTIES
  COMPILE_FLAGS "..."
)

Также можно установить параметры для каждой папки, разделив ваш проект как подпроект, добавив его с помощью add_subdirectory(your_project), а в вашем проекте CMakeLists.txt используйте add_definitions(...).

Из документации CMake:

add_definitions Добавляет флаги в командную строку компилятора для источников в текущем каталоге и ниже.

Ответ 2

В основном так же, как ответ @ronkot. Но не нужно add_subdirectory для определенного каталога, использование set_source_files_properties с file(GLOB_RECURSE...) также работает.

file(GLOB_RECURSE SRC_DIR "SRC_DIR/*.c" "SRC_DIR/*.h")

set_source_files_properties(
  ${SRC_DIR}
  PROPERTIES
  COMPILE_FLAGS "-w"
)