CMAKE_MESSAGE_CONTEXT¶
在版本 3.17 中添加。
当通过 cmake --log-context
命令行选项或 CMAKE_MESSAGE_CONTEXT_SHOW
变量启用时,message()
命令将 CMAKE_MESSAGE_CONTEXT
列表转换为用方括号括起来的点分隔字符串,并将其添加为日志级别 NOTICE
及以下消息的每行的开头。
为了有效地记录上下文,项目通常应向 CMAKE_MESSAGE_CONTEXT
的当前值 APPEND
和 POP_BACK
一项,而不是替换它。项目不应假设源树顶部的消息上下文是空的,因为可能已设置上下文的情景(例如,分层项目)。
警告
有效上下文名称仅限于可以作为 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`