CMake中存储文件或目录路径列表应使用哪种缓存变量类型
存储分号分隔的文件路径列表、目录路径列表时,统一选择STRING类型即可,不需要用FILEPATH或PATH类型。
原因说明
FILEPATH的设计定位是存储单个文件路径,PATH的设计定位是存储单个目录路径。如果将多路径的分号分隔列表设置为这两种类型,cmake-gui的路径选择交互功能会失效:它会将整段分号分隔的字符串视为单个路径进行解析和校验,既无法正常编辑列表内的多个路径,还可能出现路径校验报错。STRING类型没有路径格式的强制校验约束,完全适配CMake用分号分隔表示列表的语法规则,后续你在CMake脚本中使用list()系列命令操作列表、遍历处理每个路径的逻辑都不会受任何影响。
补充可选方案
如果你希望用户在cmake-gui中可以通过路径选择器逐个添加路径,也可以定义多个FILEPATH/PATH类型的单路径缓存变量,最后在脚本中将这些变量的值合并为一个列表使用即可。
内容的提问来源于stack exchange,提问作者einpoklum
相关产品推荐
相关产品推荐

