Files
build_infra/0_笔记/cmake函数总结.txt
T
2026-06-16 10:23:51 +08:00

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 生成表达式 一定要拿""包起来,不知道什么原因