variable_watch¶
監看 CMake 變數是否變更。
variable_watch(<variable> [<command>])
如果指定的 <variable>
變更且未提供 <command>
,則會印出訊息以告知變更。
如果提供 <command>
,則會改為執行此命令。此命令將接收以下引數:COMMAND(<variable> <access> <value> <current_list_file> <stack>)
<variable>
正在存取的變數名稱。
<access>
其中之一:
READ_ACCESS
、UNKNOWN_READ_ACCESS
、MODIFIED_ACCESS
、UNKNOWN_MODIFIED_ACCESS
或REMOVED_ACCESS
。UNKNOWN_
值僅在變數從未設定時使用。一旦設定,即使變數稍後取消設定,在同一個 CMake 執行期間也不會再次使用。<value>
變數的值。在修改時,這是變數的新 (已修改) 值。在移除時,值為空。
<current_list_file>
執行存取之檔案的完整路徑。
<stack>
目前在檔案包含堆疊上所有檔案的絕對路徑清單,其中最底層的檔案在前,而目前處理的檔案 (即
current_list_file
) 在後。
請注意,對於某些存取 (例如 list(APPEND)
),監視器會執行兩次,第一次是讀取存取,然後是寫入存取。另請注意,對變數的 if(DEFINED)
查詢不會註冊為存取,且監視器不會執行。
只有非快取變數可以使用此命令監看。永遠不會監看對快取變數的存取。然而,快取變數 var
的存在會導致對非快取變數 var
的存取不使用 UNKNOWN_
前綴,即使非快取變數 var
從未存在過。