CMake没有目录路径的全局文件列表

时间:2018-06-07 09:49:20

标签: c++ cmake glob

我在这个网站及其他地方进行了长时间的搜索,但我似乎找不到解决这个问题的方法:

如果在CMake中使用文件(GLOB ..)对文件列表进行选通,则会列出所有文件及其完整路径。

如何在CMake中为一组文件选通仅保存文件的名称?

我读了official manual,在这里我发现了这个:

 file(GLOB <variable>
 [LIST_DIRECTORIES true|false] [RELATIVE <path>]
 [<globbing-expressions>...])

 By default GLOB lists directories - directories are omitted in result 
 if LIST_DIRECTORIES is set to false.

我尝试了这些解决方案,但它们都不起作用:

file(GLOB_RECURSE src_files LIST_DIRECTORIES false ${SRC})

file(GLOB_RECURSE src_files LIST_DIRECTORIES=false ${SRC})

file(GLOB_RECURSE src_files LIST_DIRECTORIES(false) ${SRC})

set(LIST_DIRECTORIES false)
file(GLOB_RECURSE src_files ${SRC})

但这些似乎都不起作用。我的输出始终是附加完整路径的文件列表。我知道我可以使用RELATIVE来相应地设置路径,但如果可以,我宁愿避免使用它。

感谢您的回答!

2 个答案:

答案 0 :(得分:3)

当给定位置LIST_DIRECTORIES包含文件和目录时,

${SRC}用于在结果中包含/排除目录。

如果您想摆脱路径,请对foreach

的结果使用get_filename_componentfile(GLOB_RECURSE...)

答案 1 :(得分:-2)

尝试

LinearRegression

文档有误,file(GLOB_RECURSE LIST_DIRECTORIES false src_files ${SRC}) 位于变量之前