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