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
从未存在过。