Spec-Zone.ru › CMake 3.22

message

Записать сообщение.

Синопсис

General messages
  message([<mode>] "message text" ...)

Reporting checks
  message(<checkState> "message text" ...)

Общие сообщения

message([<mode>] "message text" ...)

Записать указанный текст сообщения в журнал. Если указано более одной строки сообщения, они конкатенируются в одно сообщение без разделителей между строками.

Необязательное ключевое слово <mode> определяет тип сообщения, что влияет на способ обработки сообщения:

FATAL_ERROR

Ошибка CMake, остановка обработки и генерации.

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–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.22/command/message.html

Spec-Zone.ru

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