5

在缓存变量的情况下是否可以使用列表而不是变量?

这里我如何使用缓存变量

set(VAR "Value" CACHE INTERNAL "My Var")
set(VAR "${VAR} Value2" CACHE INTERNAL "My Var")
4

1 回答 1

5

CMake 列表以分号分隔,因此您可以set像这样直接列出列表:

set(VAR Value;Value2 CACHE INTERNAL "My Var")

话虽如此,即使列表以分号分隔的项目形式保存,也可以set在每个项目之间使用空格来构造它们;例如

set(MyList Value Value2)  # list is  Value;Value2

因此,如果您的值包含空格,则需要将列表括在引号中"

set(VAR "Value 1;Value 2" CACHE INTERNAL "My Var")  # list is  Value 1;Value 2

最后一点是,如果您已经构建了列表,则在缓存时不需要将列表变量用引号引起来:

set(MyList "Value 1;Value 2")  # list is  Value 1;Value 2
set(VAR ${MyList} CACHE INTERNAL "My Var")  # no quotes required

编辑:

据我所知,您是在询问该list(APPEND...)命令是否可用于直接缓存值。

答案是否定的,但您的尝试几乎是正确的。为了获得预期的效果,您需要在缓存列表时使用分号而不是空格:

set(VAR "${VAR};Value2" CACHE INTERNAL "My Var")
于 2013-05-25T22:33:13.417 回答