cmake PARENT_SCOPE
时间: 2024-05-27 20:07:00 浏览: 128
Cmake工具
在 CMakeLists.txt 文件中,当我们使用 set 命令给一个变量赋值时,该变量默认只在当前作用域内有效,即只在该 set 命令所在的函数或者 if/else/foreach 等语句中有效。如果我们希望这个变量在更高层次的作用域中也能被访问,就需要使用 PARENT_SCOPE 参数。
例如,我们有两个函数分别定义了变量 var1 和 var2,且 var1 被定义在了函数内部,而 var2 被定义在了函数外部:
```
function(func1)
set(var1 "hello")
endfunction()
set(var2 "world")
```
如果我们在 func1 函数中使用 PARENT_SCOPE 参数,则 var1 可以被 func1 的调用者访问到:
```
function(func1)
set(var1 "hello" PARENT_SCOPE)
endfunction()
set(var2 "world")
func1()
message("var1: ${var1}") # 输出 "var1: hello"
message("var2: ${var2}") # 输出 "var2: world"
```
需要注意的是,使用 PARENT_SCOPE 参数将变量提升到更高层次的作用域时,需要确保该作用域中没有同名变量,否则会覆盖原有的变量。
阅读全文