Spec-Zone.ru › CMake 3.18

сообщение

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

Резюме

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

Подробные сообщения с очень низкоуровневыми деталями реализации. Сообщения, использующие этот уровень ведения журнала, обычно являются временными и должны быть удалены перед выпуском проекта, упаковкой файлов и т. д.

Инструмент CMake командной строки отображает сообщения STATUS по TRACE в stdout, предваряя сообщение двумя дефисами и пробелом. Все другие типы сообщений отправляются в stderr и не предваряются дефисами. CMake GUI отображает все сообщения в своей области журнала. curses interface показывает сообщения STATUS по TRACE по одному на строке состояния и другие сообщения в интерактивном всплывающем окне. Опция --log-level командной строки для каждого из этих инструментов может использоваться для управления отображением сообщений. Чтобы сохранить уровень ведения журнала между запусками CMake, переменная CMAKE_MESSAGE_LOG_LEVEL может быть установлена вместо этого. Обратите внимание, что опция командной строки имеет приоритет перед переменной кэша.

Сообщения уровней ведения журнала NOTICE и ниже будут иметь каждую строку, предваряемую содержимым переменной CMAKE_MESSAGE_INDENT (преобразованным в одну строку путем конкатенации его элементов списка). Для сообщений STATUS по TRACE это отступы будут вставлены после дефисов.

Сообщения уровней ведения журнала NOTICE и ниже также могут иметь каждую строку, предваряемую контекстом в формате [some.context.example]. Содержимое между квадратными скобками получается путем преобразования переменной списка CMAKE_MESSAGE_CONTEXT в строку, разделенную точками. Контекст сообщения всегда будет отображаться перед любым отступом, но после любых автоматически добавленных ведущих дефисов. По умолчанию контекст сообщения не отображается, его необходимо явно включить, указав опцию командной строки cmake --log-context или установив переменную CMAKE_MESSAGE_CONTEXT_SHOW в значение true. См. документацию по CMAKE_MESSAGE_CONTEXT для примеров использования.

Текст сообщений CMake Warning и Error отображается с использованием простого языка разметки. Неотступленный текст отформатирован в параграфах, перенос которых осуществляется по строкам, ограниченным новыми строками. Отступленный текст считается предварительно отформатированным.

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

Распространенным шаблоном в выводе 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–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.18/command/message.html

Spec-Zone.ru

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