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

Dom*_*lli 1 c++ glob cmake

如果您在 CMake 中使用全局文件列表file(GLOB..),则所有文件都会列出并附加其完整路径。

如何在 CMake 中 glob 一组文件,仅保存文件名?

我阅读了官方手册,在这里我发现了这一点:

 file(GLOB <variable>
 [LIST_DIRECTORIES true|false] [RELATIVE <path>]
 [<globbing-expressions>...])
Run Code Online (Sandbox Code Playgroud)

 By default GLOB lists directories - directories are omitted in result 
 if LIST_DIRECTORIES is set to false.
Run Code Online (Sandbox Code Playgroud)

我尝试了这些解决方案,但没有一个有效:

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})
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*iak 5

LIST_DIRECTORIES${SRC}当给定位置同时包含文件和目录时,用于在结果中包含/排除目录。

如果你想摆脱路径,请与以下结果foreach一起使用get_filename_componentfile(GLOB_RECURSE...)