【发布时间】:2018-06-07 09:49:19
【问题描述】:
我在这个网站及其他地方进行了大量搜索,但我似乎无法找到解决这个问题的方法:
如果您在 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 来相应地设置路径,但如果可以的话,我宁愿避免它。
感谢您的回答!
【问题讨论】:
-
为什么使用完整路径会出现问题?您要解决的实际问题是什么?
-
“我知道我可以使用 RELATIVE 来相应地设置路径,但如果可以的话,我宁愿避免它。” - 但是 RELATIVE 是从结果路径中去除目录组件的确切方式。为什么要避免它?
-
实际问题是我需要将一组文件(来自不同的文件夹)和符号链接到一个文件夹中。我想避免 RELATIVE 因为我需要创建很多文件(GLOB ...)而且我认为这不是很好。
-
哦,所以使用 GLOB_RECURSE 是有意的。您引用了
file(GLOB)的签名,所以我认为您在代码中使用了file(GLOB_RECURSE)。