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