Cmake list get命令

Cmake list get命令,cmake,Cmake,为什么下面的命令不起作用 SET(MY_LIST a b c d) LIST(GET ${MY_LIST} 0 HEAD) MESSAGE("HEAD = ${HEAD}") 我希望它将a分配给HEAD,但我得到的是NOTFOUND 我已经尝试过用双引号括住${MY_LIST},并将索引改为1而不是0(不知道为什么会有人这样做,但尝试没有什么坏处)。需要一个变量作为第二个参数,即: set (MY_LIST a b c d) list (GET MY_LIST 0 HEAD) message

为什么下面的命令不起作用

SET(MY_LIST a b c d)
LIST(GET ${MY_LIST} 0 HEAD)
MESSAGE("HEAD = ${HEAD}")
我希望它将
a
分配给
HEAD
,但我得到的是
NOTFOUND

我已经尝试过用双引号括住
${MY_LIST}
,并将索引改为1而不是0(不知道为什么会有人这样做,但尝试没有什么坏处)。

需要一个变量作为第二个参数,即:

set (MY_LIST a b c d)
list (GET MY_LIST 0 HEAD)
message ("HEAD = ${HEAD}") 

从文件上看真的不清楚。CMake文档不包含使用示例是很糟糕的:-(最糟糕的是所有命令之间的差异。对于此命令,奇怪的是您需要一个未替代的变量!如果您记住,按值传递列表在CMake中效率非常低(就像在其他语言中一样),因此,每次CMake函数要求您提供列表时,它都会通过引用(即通过未替换的名称)执行此操作。然后,该命令将无法处理文字,我认为这不是正交的。