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