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