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`