【发布时间】:2018-06-01 15:01:30
【问题描述】:
我正在尝试在 CMake 中编写一个函数,该函数将获取一个列表,并对其进行更新,以便列表中的每个项目都附加一个字符串。
我的代码大致如下(大致基于对上一个问题here 的回答):
function(prepend_number _input_list)
set(_new_list "")
foreach(_item ${_input_list})
list(APPEND _new_list "number_${_item}")
endforeach()
message(STATUS "Input: ${_input_list}")
message(STATUS "Ammended list: ${_new_list}")
set(${_input_list} "${_new_list}" PARENT_SCOPE)
message(STATUS "Revised input: ${_input_list}")
endfunction()
set(numbers one two three four five)
prepend_number("${numbers}")
由此我得到以下输出:
Input: one;two;three;four;five
Ammended list: number_one;number_two;number_three;number_four;number_five
Output: one;two;three;four;five
我对此感到困惑。为什么_input_list的值不等于_new_list的值?
如果我添加一行额外的代码来显示函数外部的数字内容(即message(STATUS "${numbers}"))我会得到类似的结果,numbers 的内容没有改变。这里缺少什么?
【问题讨论】: