Spec-Zone.ru › CMake 3.20

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 Warning и Error отображается с использованием простого языка разметки. Неотступленный текст форматируется в абзацах с переходом на новую строку, ограниченными новой строкой. Отступленный текст считается предварительно отформатированным.

Отчет о проверках

Добавлено в версии 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.20/command/message.html

Spec-Zone.ru

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