为什么我的cmake函数没有为参数赋值?

时间:2018-12-14 19:14:23

标签: cmake

我编写了此函数,该函数接受一个列表并将新值附加到该列表。什么时候 我只打印目录。

function(test dst_list)
# do somethin
  set(my_list "dir1" "dir2")
  set(${dst_list} ${my_list})
#  message(${dst_list})
endfunction()

set(my_list "dir")
test(my_list)
message("${my_list}")

1 个答案:

答案 0 :(得分:0)

如果在函数前先设置了一些变量然后在函数中进行了更改然后返回以便可以读取新值,请在这里欺骗,必须像在set()中一样在函数中添加裸变量名称,并分别添加变量值。您必须使用的其他技巧是PARENT_SCOPE,因此可以返回函数中的set()变量(我认为在这种情况下,它们将用相同的名称重写)。

function(test var_rtn  var_val)
    set(my_list "dir1" "dir2")
    set(${var_rtn} ${var_val} ${my_list} PARENT_SCOPE)
endfunction()

set(my_list "dir")
test(my_list "${my_list}")
message("ANSWER: ${my_list}")

您的输出现在将是:ANSWER: dir;dir1;dir2