cmake - 如何将空元素添加到 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
我找到了一种解决方法,但它看起来像一个kludge:
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
推荐阅读
- kubernetes - 多容器 pod 与多 pod 之间的区别
- nagios - NRPE:远程不支持版本 3 数据包
- c# - 找不到 BaseCommandModule 类,与正在使用的正确命名空间相反
- excel - 添加个性化右键单击选项后更改工作表
- vba - Excel VBA 宏将当前工作簿的选择作为电子邮件的附件发送
- c# - 使用 Bearer Token 在 C# 中构建 post HttpClient 请求
- python - 如何查看 sqlalchemy 数据库?
- reactjs - React Native WebView 中的 React Facebook 登录
- python - 无法使用 bs4、python 和 selenium 抓取标题
- html - 在线显示 2 个元素,并且仍然可以垂直调整任一元素