Spec-Zone.ru › CMake 3.24

message

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

Синтаксис

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 на стандартном выводе, с сообщением, предваряемым двумя дефисами и пробелом. Все остальные типы сообщений отправляются в 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–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.24/command/message.html

Spec-Zone.ru

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