variable_watch

監看 CMake 變數是否變更。

variable_watch(<variable> [<command>])

如果指定的 <variable> 變更且未提供 <command>,則會印出訊息以告知變更。

如果提供 <command>,則會改為執行此命令。此命令將接收以下引數:COMMAND(<variable> <access> <value> <current_list_file> <stack>)

<variable>

正在存取的變數名稱。

<access>

其中之一:READ_ACCESSUNKNOWN_READ_ACCESSMODIFIED_ACCESSUNKNOWN_MODIFIED_ACCESSREMOVED_ACCESSUNKNOWN_ 值僅在變數從未設定時使用。一旦設定,即使變數稍後取消設定,在同一個 CMake 執行期間也不會再次使用。

<value>

變數的值。在修改時,這是變數的新 (已修改) 值。在移除時,值為空。

<current_list_file>

執行存取之檔案的完整路徑。

<stack>

目前在檔案包含堆疊上所有檔案的絕對路徑清單,其中最底層的檔案在前,而目前處理的檔案 (即 current_list_file) 在後。

請注意,對於某些存取 (例如 list(APPEND)),監視器會執行兩次,第一次是讀取存取,然後是寫入存取。另請注意,對變數的 if(DEFINED) 查詢不會註冊為存取,且監視器不會執行。

只有非快取變數可以使用此命令監看。永遠不會監看對快取變數的存取。然而,快取變數 var 的存在會導致對非快取變數 var 的存取不使用 UNKNOWN_ 前綴,即使非快取變數 var 從未存在過。