如何在CMake列表中添加空元素?

zf2sa74q  于 2023-02-16  发布在  其他
关注(0)|答案(1)|浏览(189)

有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()
nhhxz33t

nhhxz33t1#

它似乎不适用于空列表,但是如果你用一些伪值初始化列表,就像你在第二个例子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

相关问题