重要的是要了解CMake如何区分列表和纯字符串。当您写:
set(VAR "a b c")
您创建一个带有值的字符串"a b c"。但是,当您编写不带引号的这一行时:
set(VAR a b c)
您创建一个列表的三个项目,而不是:"a","b"和"c"。
非列表变量实际上也是(单个元素的)列表。
可以使用list()命令来操作列表,该命令允许连接列表,搜索列表,访问任意元素等(的文档list())。
有点令人困惑的是,列表也是一个字符串
set(VAR a b c)
相当于
set(VAR "a;b;c")
因此,要串联列表,还可以使用以下set()命令:
set(NEW_LIST "${OLD_LIST1};${OLD_LIST2})"