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