c++ CMake不带目录路径的文件的glob列表

kjthegm6  于 2023-03-20  发布在  其他
关注(0)|答案(2)|浏览(166)

如果您在CMake中使用file(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来相应地设置路径,但如果可以的话,我宁愿避免它。

i7uq4tfw

i7uq4tfw1#

LIST_DIRECTORIES用于在给定位置${SRC}同时包含文件和目录的情况下在结果中包括/排除目录。
如果要删除path,请对file(GLOB_RECURSE...)的结果使用foreach沿着get_filename_component

knpiaxh1

knpiaxh12#

试试看

file(GLOB_RECURSE LIST_DIRECTORIES false src_files ${SRC})

文档错误,LIST_DIRECTORIES出现在变量之前

相关问题