如何获取未知长度的 CMake 列表的最后一个元素?

agr*_*ell 2 list cmake

我有一个包含字符串的未知长度列表。我想将最后一个项目与倒数第二个项目进行比较,但我找不到一种简单的方法来检索这些元素,因此我可以比较它们。

我尝试获取列表的长度,然后使用 (length-1) 作为传入列表GET函数的索引,但这似乎不起作用。

set(my_list a b c) # I don't actually know the length of the original list
list(LENGTH my_list list_len)
list(GET my_list (list_len-1) last_item) # doesn't work
Run Code Online (Sandbox Code Playgroud)

我希望将元素c保存在last_item变量中,但它仍然为空。在 CMake 中执行此操作的正确方法是什么?

Dan*_*lli 6

您必须使用math才能执行数学运算。

list(LENGTH my_list list_len)
math(EXPR list_last "${list_len} - 1")
list(GET my_list ${list_last} last_item)
Run Code Online (Sandbox Code Playgroud)

编辑:可以使用负数从列表末尾获取元素,您可以使用 -1 获取列表的最后一项:

list(GET my_list -1 last_item)
Run Code Online (Sandbox Code Playgroud)