Cmake list-get命令

fre*_*ass 24 cmake

为什么以下命令不起作用?

SET(MY_LIST a b c d)
LIST(GET ${MY_LIST} 0 HEAD)
MESSAGE("HEAD = ${HEAD}")
Run Code Online (Sandbox Code Playgroud)

我希望它分配aHEAD但是我得到了NOTFOUND.

我已经尝试${MY_LIST}使用双引号并将索引更改为1而不是0(不知道为什么有人会这样做,但尝试没有伤害).

sak*_*kra 38

列表的命令需要一个未取代的变量作为第二个参数,即:

set (MY_LIST a b c d)
list (GET MY_LIST 0 HEAD)
message ("HEAD = ${HEAD}") 
Run Code Online (Sandbox Code Playgroud)

  • 从文档中确实不清楚。糟糕的是,CMake文档中没有用法示例。:-( (3认同)
  • 最糟糕的是所有命令之间的区别。对于这个命令,奇怪的是你需要一个未替换的变量! (2认同)
  • 如果您还记得,通过值传递列表在CMake中效率很低(就像在其他语言中一样),因此变得更简单,因此每次CMake函数要求您提供列表时,它总是会通过引用(即通过非替换)来完成此操作名称。 (2认同)