gpt4 book ai didi

CMake:复制字符串列表的深度

转载 作者:行者123 更新时间:2023-12-02 20:24:32 25 4
gpt4 key购买 nike

当我使用 set 复制字符串列表时,我得到的是一个引用而不是深拷贝,因为当我从我的新列表变量中删除一些项目时,元素也会从原始列表中删除。

我的代码如下所示:

set(NEW_LIST ${TARGET_NAME}_SRC_FILES)
message("new list content1 : ${${NEW_LIST}}")
list(REMOVE_ITEM ${NEW_LIST} ${${TARGET_NAME}_LIN64_EXCLUDED_SRC_FILES})
message("new list content2 : ${${NEW_LIST}}")
message("original list content: ${${TARGET_NAME}_SRC_FILES}")

首先打印给我删除前的完整列表,以下两个更短且相同。

我正在寻找不会改变原始列表的内容。

编辑:我更新了上面的代码片段,列表是这样填充的:

set( ${TARGET_NAME}_SRC_FILES
foo.cpp
foo2.cpp)

最佳答案

操作

set(NEW_LIST ${TARGET_NAME}_SRC_FILES)

NEW_LIST 变量分配给变量名称 ${TARGET_NAME}_SRC_FILES

因此 double 取消引用 NEW_LIST 返回 ${TARGET_NAME}_SRC_FILES 变量的值。

# Prints value of '${TARGET_NAME}_SRC_FILES' variable.
message("new list content1: ${${NEW_LIST}}")

要将一个变量的值赋给另一个变量,您需要取消引用该变量:

 set(NEW_LIST ${${TARGET_NAME}_SRC_FILES})
# Now NEW_LIST variable contains current value of '${TARGET_NAME}_SRC_FILES' one.
# Possibly modify '${TARGET_NAME}_SRC_FILES' variable...
# ... but content of NEW_LIST variable remains the same
message("new list content1: ${NEW_LIST}")

关于CMake:复制字符串列表的深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50378522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com