如何将空元素添加到 CMake 列表



有CMake脚本:

unset(FOO)
list(APPEND FOO "")
list(APPEND FOO "")
list(APPEND FOO "")
list(APPEND FOO "")
list(LENGTH FOO SIZE)
message(FATAL_ERROR ${SIZE})

期望 - 4。现实 - 0

我找到了一种解决方法,但它看起来像一个笨蛋:

set(FOO "dummy")
set(FOO "${FOO};")
set(FOO "${FOO};")
set(FOO "${FOO};")
set(FOO "${FOO};")
list(REMOVE_AT FOO 0)
message(FATAL_ERROR ${SIZE})

这个例子比我的任务简单一点,所以,请不要建议写set(FOO ";;;") :)我从外面得到元素,其中一些可能是空的。像这样:

function(do_smth LIST_WITH_EMPTY_ITEMS)
    unset(RESULT)
    foreach(X IN LISTS LIST_WITH_EMPTY_ITEMS)
        if(${CONDITION})
            list(APPEND RESULT "${X}")
        endif()
    endforeach()
endfunction()

它似乎不适用于空列表,但是如果您使用一些虚拟值初始化列表,就像您在第二个示例set(FOO "dummy")中所做的那样,您可以继续将FOO用作列表,也可以向其附加空元素。它基本上是您想要的方法和解决方法的组合:

set(FOO "dummy")
list(APPEND FOO "")
list(APPEND FOO "")
list(APPEND FOO "")
list(APPEND FOO "")
list(POP_FRONT FOO)
list(LENGTH FOO SIZE)
message("content: (${FOO})")
message("sizt: ${SIZE}")

其输出为:

content: (;;;)
size: 4

最新更新