Spec-Zone.ru › CMake 3.28

CMAKE_MESSAGE_CONTEXT

Новое в версии 3.17.

При включении опцией командной строки cmake --log-context или переменной CMAKE_MESSAGE_CONTEXT_SHOW, команда message() преобразует список CMAKE_MESSAGE_CONTEXT в строку, разделённую точками и заключённую в квадратные скобки, и добавляет её в начало каждой строки для сообщений уровня логирования NOTICE и ниже.

Для эффективной работы контекстов логирования проекты обычно должны APPEND и POP_BACK элемент в текущее значение CMAKE_MESSAGE_CONTEXT, а не заменять его. Проекты не должны предполагать, что контекст сообщений в корне исходного дерева пуст, так как в некоторых сценариях (например, в иерархических проектах) контекст может быть уже задан.

Предупреждение

Допустимые имена контекстов ограничены именами, которые могут использоваться в качестве переменных CMake. Все имена, начинающиеся с подчёркивания или строки cmake_, также зарезервированы CMake и не должны использоваться проектами.

Пример:

function(bar)
  list(APPEND CMAKE_MESSAGE_CONTEXT "bar")
  message(VERBOSE "bar VERBOSE message")
endfunction()

function(baz)
  list(APPEND CMAKE_MESSAGE_CONTEXT "baz")
  message(DEBUG "baz DEBUG message")
endfunction()

function(foo)
  list(APPEND CMAKE_MESSAGE_CONTEXT "foo")
  bar()
  message(TRACE "foo TRACE message")
  baz()
endfunction()

list(APPEND CMAKE_MESSAGE_CONTEXT "top")

message(VERBOSE "Before `foo`")
foo()
message(VERBOSE "After `foo`")

list(POP_BACK CMAKE_MESSAGE_CONTEXT)

Что приводит к следующему выводу:

-- [top] Before `foo`
-- [top.foo.bar] bar VERBOSE message
-- [top.foo] foo TRACE message
-- [top.foo.baz] baz DEBUG message
-- [top] After `foo`

© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.25/variable/CMAKE_MESSAGE_CONTEXT.html

Spec-Zone.ru

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