33 lines
1.7 KiB
Plaintext
33 lines
1.7 KiB
Plaintext
|
|
cmake 传递变量
|
|
cmake函数只支持传值调用,由于cmake函数可以访问到外部变量,那么通过传入外部变量名称
|
|
就可以对外部变量进行,赋值,修改。
|
|
当传入外部变量名称时,使用时要${${out_var_name}} 第一次解引用时获取外部变量名称,第二次解引用是
|
|
获取外部变量的值
|
|
而修改时需要 set(${out_list_var_name} "返回的值" PARENT_SCOPE) #一层解引用时获取到外部变量名称
|
|
|
|
|
|
|
|
1.1 传普通变量
|
|
1. 传值,传入"${外部变量名}"或${外部变量名},函数内部使用 ${形参名} 获取到传来的值
|
|
2. 传引用,传入外部变量名, 函数内部使用 ${${形参名}} 获取到传来的值
|
|
1.2 传列表变量
|
|
列表变量能和传值一样使用,列表变量传值时(${list_variableName}),会把每一个元素都当成一个函数参数弄到ARGN里,
|
|
有两种方式
|
|
1. 传值,传入"${外部列表变量名}", 函数使用 ${形参名}
|
|
2. 传引用,传入 外部列表变量名, 函数使用${${形参名}}, 第一层解引用获得外部变量名,第二层解引用获得变量值
|
|
1.3 传引用
|
|
返回值 set(${out_var_name} "返回的值" PARENT_SCOPE)
|
|
1.4
|
|
如果函数内部定义了临时的list列表存储中间状态,由于外部变量函数内部可以访问到,
|
|
需要set(listName)先置空
|
|
out_list_var_name 是外部列表变量的名称
|
|
function(out_list_var_name)
|
|
使用 ${${out_list_var_name}}
|
|
返回值 set(${out_list_var_name} "返回的值" PARENT_SCOPE)
|
|
|
|
|
|
变量作用域在 .cmake CMakeLists.txt 传递的区别
|
|
|
|
cmake 生成表达式 一定要拿""包起来,不知道什么原因
|