如同 C 语言一样,在 cmake 中,变量也有作用域的概念,本文我们就来聊一聊关于 cmake 中变量作用域的问题。
对于函数作用域,当在函数内通过 set 将变量 var 与当前函数作用域绑定时,变量 var 仅在函数作用域内有效,出了这个作用域,如果这个作用域外也有同名的变量 var,那么使用的将是域外同名变量 var;func1()内部调用 func2(),嵌套调用的函数 func2()内部如果也引用变量 var,那么该变量 var 应该是 func1()内部定义的变量,如果有的话;如果 func1()内部没有绑定变量 var,那么就会使用 func1()作用 域外定义的变量 var,依次向外搜索。
以上这段话大家可能不好理解,我们通过几个示例来看看函数作用域。
①、函数内部引用函数外部定义的变量
示例代码如下所示:
# 函数 xyz
function(xyz)
message(${ABC}) #引用变量 ABC
endfunction()
set(ABC "Hello World") #定义变量 ABC
xyz() # 调用函数
ABC 是函数外部定义的一个变量,在函数 xyz 中引用了该变量,打印信息如下:
所以可知,函数内可以引用函数外部定义的变