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–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.29/variable/CMAKE_MESSAGE_CONTEXT.html