Почему моя функция cmake не присваивает значение аргументу? - PullRequest
0 голосов
/ 14 декабря 2018

Я пишу эту функцию, которая берет список и добавляет к нему новые значения.Когда я печатаю, он печатает только dir.

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 голосов
/ 15 декабря 2018

Хитрость здесь, если вы установили () некоторую переменную перед функцией, а затем изменили ее в функции и вернули, чтобы вы могли прочитать новое значение, вы должны добавить к функции голое имя переменной, как в вашем 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...