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