CMAKE_MESSAGE_CONTEXT¶
在 3.17 版本加入.
当由 cmake --log-context 命令行选项或 CMAKE_MESSAGE_CONTEXT_SHOW 变量启用时, message() 命令将 CMAKE_MESSAGE_CONTEXT 列表转换为以点分隔的字符串由方括号括起来,并将其添加到日志级别为“通知”及以下的消息的每一行之前。
为了使日志上下文有效地工作,项目通常应该将一个项目``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`