Spec-Zone.ru › CMake

cmake-diagnostics(7)

  • Введение
  • Управление диагностикой
  • Категории диагностики

Введение

Добавлено в версии 4.4.

Диагностика CMake — это механизм, с помощью которого CMake классифицирует и предоставляет определённую справочную информацию о конфигурации проекта и генерации его системы сборки. Эту диагностику можно рассматривать как эквивалент предупреждений компилятора для системы сборки. Диагностика помогает выявить потенциальные проблемы в нескольких категориях:

  • Проблемы, которые могут повлиять на успешность сборки.
  • Проблемы, которые могут повлиять на корректность сборки.
  • Проблемы, которые могут повлиять на корректность упаковки проекта.
  • Проблемы, которые могут повлиять на возможность сборки проекта с более новыми версиями зависимостей.
  • Проблемы, которые могут повлиять на возможность сборки проекта с более новыми версиями CMake.

Управление диагностикой

Для каждой категории диагностики определено действие, выполняемое при возникновении соответствующей диагностики. По умолчанию для большинства категорий выводятся предупреждения. Доступные действия описаны в документации команды cmake_diagnostic().

CMake поддерживает стек состояний диагностики, аналогичный стеку состояний политик. Начальное состояние стека определяется четырьмя факторами в порядке приоритета:

  • Действие по умолчанию, связанное с диагностикой.
  • Действие, связанное с диагностикой и сохранённое в кэше переменных CMake, который используется для сохранения начального состояния между запусками CMake.
  • Поля warnings и errors из CMake Presets.
  • Аргументы командной строки -W[no-][error=].

Примечание

Поскольку аргументы командной строки действуют как рекурсивно, так и в указанном порядке, некоторые сочетания аргументов диагностики могут привести к тому, что более поздние аргументы полностью переопределят действие более ранних. Например, -Wno-child -Wparent приведёт к включению предупреждения child, поскольку -Wparent повышает уровень как parent, так и child как минимум до уровня серьёзности WARN. Пресеты CMake обрабатываются по порядку: от наиболее предкового к наименее предковому.

Во время выполнения скрипта команду cmake_diagnostic() можно использовать для запроса или изменения состояния, а также для ограниченных операций со стеком.

Когда диагностика выдаётся на этапе конфигурации (или во время выполнения скрипта, если CMake запущен в режиме скрипта), действие определяется текущим состоянием диагностики. Для диагностики, выдаваемой на этапе генерации или вне этапов конфигурации и генерации, необходимо использовать сохранённые сведения о состоянии. CMake стремится сохранять эти сведения так, чтобы сохранённое состояние соответствовало состоянию на момент выполнения команды CMake, которая в конечном итоге приводит к выдаче диагностики, однако иногда CMake может использовать состояние на момент завершения обработки подкаталога или даже корневое состояние. Это может ограничить возможность управления такой диагностикой с помощью команды cmake_diagnostic(), особенно если она вызвана из функции или подключённого файла. В особенности это относится к диагностике, не связанной напрямую с командой CMake.

Категории диагностики

Определены следующие категории:

  • CMD_AUTHOR
  • CMD_DEPRECATED
  • CMD_EXPERIMENTAL
  • CMD_INSTALL_ABSOLUTE_DESTINATION
  • CMD_POLICY
  • CMD_UNINITIALIZED
  • CMD_UNUSED_CLI

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/manual/cmake-diagnostics.7.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API