message
Залогировать сообщение.
Synopsis
General messages message([<mode>] "message text" ...) Reporting checks message(<checkState> "message text" ...)
Общие сообщения
message([<mode>] "message text" ...)
Записать указанный текст сообщения в журнал. Если предоставлено несколько строк сообщений, они объединяются в одно сообщение без разделителей между строками.
Необязательное ключевое слово <mode> определяет тип сообщения, что влияет на обработку сообщения:
-
FATAL_ERROR -
Ошибка CMake, остановить обработку и генерацию.
Исполняемый файл
cmake(1)вернёт ненулевое значение выхода. -
SEND_ERROR -
Ошибка CMake, продолжить обработку, но пропустить генерацию.
-
WARNING -
Предупреждение CMake, продолжить обработку.
-
AUTHOR_WARNING -
Предупреждение CMake (dev), продолжить обработку.
-
DEPRECATION -
Ошибка или предупреждение об устаревании CMake, если переменная
CMAKE_ERROR_DEPRECATEDилиCMAKE_WARN_DEPRECATEDсоответственно включены, иначе сообщение не выводится. -
(none) or NOTICE -
Важное сообщение, выводимое в stderr, чтобы привлечь внимание пользователя.
-
STATUS -
Основные интересные сообщения, которые могут заинтересовать пользователей проекта. В идеале они должны быть лаконичными, не более одной строки, но при этом информативными.
-
VERBOSE -
Подробные информационные сообщения, предназначенные для пользователей проекта. Эти сообщения должны предоставлять дополнительную информацию, которая в большинстве случаев не будет интересна, но может быть полезна тем, кто строит проект, когда они хотят получить более глубокое представление о происходящем.
-
DEBUG -
Подробные информационные сообщения, предназначенные для разработчиков, работающих над самим проектом, а не для пользователей, которые просто хотят его построить. Эти сообщения обычно не будут интересны другим пользователям, строящим проект, и часто будут тесно связаны с внутренними деталями реализации.
-
TRACE -
Подробные сообщения с очень низкоуровневыми деталями реализации. Сообщения, использующие этот уровень протоколирования, обычно являются временными и, как ожидается, будут удалены перед выпуском проекта, пакетированием файлов и т. п.
Новое в версии 3.15: Добавлены уровни NOTICE, VERBOSE, DEBUG и TRACE.
Инструмент CMake командной строки отображает сообщения STATUS до TRACE в stdout, предваряя сообщение двумя дефисами и пробелом. Все остальные типы сообщений отправляются в stderr и не предваряются дефисами. CMake GUI отображает все сообщения в своей области журнала. curses interface отображает сообщения STATUS до TRACE по одному на строке состояния и другие сообщения в интерактивном всплывающем окне. Команда --log-level командной строки каждого из этих инструментов можно использовать для управления отображаемыми сообщениями.
Новое в версии 3.17: Чтобы сохранить уровень протоколирования между запусками CMake, можно установить переменную CMAKE_MESSAGE_LOG_LEVEL. Обратите внимание, что опция командной строки имеет приоритет над переменной кэша.
Новое в версии 3.16: Сообщения уровней протоколирования NOTICE и ниже будут иметь каждую строку, предваряемую содержимым переменной CMAKE_MESSAGE_INDENT (преобразованной в одну строку путём конкатенации её элементов списка). Для сообщений STATUS до TRACE это отступы будут вставлены после дефисов.
Новое в версии 3.17: Сообщения уровней протоколирования NOTICE и ниже также могут иметь каждую строку, предваряемую контекстом в формате [some.context.example]. Содержимое в квадратных скобках получается путём преобразования переменной списка CMAKE_MESSAGE_CONTEXT в строку, разделённую точками. Контекст сообщения всегда будет отображаться перед любым отступом, но после автоматически добавленных ведущих дефисов. По умолчанию контекст сообщения не отображается, его нужно явно включить, задав опцию командной строки cmake --log-context или установив переменную CMAKE_MESSAGE_CONTEXT_SHOW в значение true. См. документацию по переменной CMAKE_MESSAGE_CONTEXT для примеров использования.
Текст сообщений об ошибках и предупреждениях CMake отображается с помощью простого языка разметки. Неотступленный текст форматируется в строках, переносимых на новую строку, ограниченных переводами строк. Отступленный текст рассматривается как предварительно отформатированный.
Сообщения о проверках
Новое в версии 3.17.
Общий шаблон в выводе CMake — сообщение, указывающее начало какой-либо проверки, за которым следует другое сообщение, сообщающее результат этой проверки. Например:
message(STATUS "Looking for someheader.h") #... do the checks, set checkSuccess with the result if(checkSuccess) message(STATUS "Looking for someheader.h - found") else() message(STATUS "Looking for someheader.h - not found") endif()
Это можно более надёжно и удобно выразить, используя ключевую форму CHECK_... команды message():
message(<checkState> "message" ...)
где <checkState> должно быть одним из следующих:
-
CHECK_START -
Записать краткое сообщение о проверке, которая будет выполняться.
-
CHECK_PASS -
Записать успешный результат проверки.
-
CHECK_FAIL -
Записать неудачный результат проверки.
При записи результата проверки команда повторяет сообщение от последней начатой проверки, для которой ещё не был сообщен результат, затем некоторые разделительные символы и затем текст сообщения, предоставленный после ключевого слова CHECK_PASS или CHECK_FAIL. Сообщения о проверках всегда сообщаются на уровне протоколирования STATUS.
Проверки могут быть вложены, и каждое CHECK_START должно иметь ровно одно соответствующее CHECK_PASS или CHECK_FAIL. Переменную CMAKE_MESSAGE_INDENT также можно использовать для добавления отступов к вложенным проверкам, если это необходимо. Например:
message(CHECK_START "Finding my things")
list(APPEND CMAKE_MESSAGE_INDENT " ")
unset(missingComponents)
message(CHECK_START "Finding partA")
# ... do check, assume we find A
message(CHECK_PASS "found")
message(CHECK_START "Finding partB")
# ... do check, assume we don't find B
list(APPEND missingComponents B)
message(CHECK_FAIL "not found")
list(POP_BACK CMAKE_MESSAGE_INDENT)
if(missingComponents)
message(CHECK_FAIL "missing components: ${missingComponents}")
else()
message(CHECK_PASS "all components found")
endif()
Вывод из вышеуказанного будет примерно таким:
-- Finding my things -- Finding partA -- Finding partA - found -- Finding partB -- Finding partB - not found -- Finding my things - missing components: B
© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.25/command/message.html