有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()
1条答案
按热度按时间nhhxz33t1#
它似乎不适用于空列表,但是如果你用一些伪值初始化列表,就像你在第二个例子
set(FOO "dummy")
中所做的那样,你可以继续使用FOO
作为一个列表,也可以向它添加空元素,这基本上是你想要的方法和解决方法的结合:其输出为: