1 FILE(GLOB <variable> 2 [LIST_DIRECTORIES true|flase]) [RELETIVE <path>] [CONFIGURE_DEPENDS] 3 [<globbing-expressions>...]) 4 FILE(GLOB_RECURSE <variable> [FOLLOW_SYMLINKS] 5 [LIST_DIRECTORIES true|flase] [RELETIVE <path>] [CONFIGURE_DEPENDS] 6 [<globbing-expressions>...]))
该指令的作用是产生一个匹配 <globbing-expressions> 的文件列表并将它存到变量 <variable> 中。文件名替代表达式和正则表达式相似,但更简单。如果 RELATIVE 标志位被设定,将返回指定路径的相对路径。结果按字典顺序排序。
如果 CONFIGURE_DEPENDS 标志位被指定,CMake将在编译时给主构建系统添加逻辑来检查目标,以重新运行 GLOB 标志的命令。 如果任何输出被改变,CMake都将重新生成这个构建系统。
注意:不推荐使用GLOB来从源文件数手机源文件列表。如果当源文件添加或删除时没有CMakeList.txt文件被修改,那么在CMake重新生成时并不会识别出它们。 CONFIGURE_DEPENDS 标志位可能不会在所有生成器上可靠地工作,如果一个新的生成器在以后被添加,并不会被支持,如果项目使用它将会被卡住。即使 CONFIGURE_DEPENDS 可靠地工作,在每个重新构建的过程中做检查也十分浪费性能。
文件名替代表达式的使用示例如下:
*.cxx - 匹配所有后缀名为cxx的文件 *.vt? - 匹配所有后缀名为vta,...,vtz的文件 f[3-5].txt - 匹配f3.txt,f4.txt.f5.txt文件
GLOB_RECURSE 将会递归所有匹配文件夹的子文件夹和匹配的文件。子文件夹为符号链接时只有当 FOLLOW_SYMLINKS 被指定或规则 CMP0009 没有设置为 NEW 时才会被递归 。
默认 GLOB_RECURSE 省略结果列表中的目录,设置 LIST_DIRECTORIES 为 true 来添加目录到结果列表中。如果 FOLLOW_SYMLINKS 被指定或规则 CMP0009 没有设置为 OLD 。LIST_DIRECTORIES 将符号链接作为路径。
递归文件名包括的例子如下:
/dir/*.py - 匹配所有python文件,在/dir 目录及其子目录中
file(RENAME <oldname> <newname>)
在文件系统中从 <oldname> 移动文件或文件夹到 <newname> ,自动替换目标路径
file(REMOVE [<files>...]) file(REMOVE_RECURSE [<files>...])
移动指定文件, REMOVE_RECURSE 模式将移动给定文件、文件夹(非空)。如果指定文件不存在不会报错。
file(MAKE_DIRECTORY [<directories>...])
创建给定文件夹,闭关根据需求创建其父文件夹。
file(<COPY|INSTALL> <files>... DESTINATION <dir> [FILE_PERMISSIONS <permissions>...] [DIRECTORY_PERMISSIONS <permissions>...] [NO_SOURCE_PERMISSIONS] [USE_SOURCE_PERMISSIONS] [FILES_MATCHING] [[PATTERN <pattern> | REGEX <regex>] [EXCLUDE] [PERMISSIONS <permissions>...]] [...])
COPY 表示复制文件、路径和符号链接到目标路径。以相对当前源文件路径计算输入路径的相对路径,以相对当前构建路径计算目标路径。复制保留输入文件时间戳,文件如果存在目标路径且时间戳相同,会对其进行优化。复制保留输入文件访问权限,除非明确权限或指定 NO_SOURCE_PERMISSIONS (默认 USE_SOURCE_PERMISSIONS) 。
查看install(DIRECTORY)命令了解文件权限,FILES_MATCHING, PATTERN,REGEX和EXCLUDE 选项。
INSTALL 选项和 COPY 略有不同:它打印状态信息(根据 CMAKE_INSTALL_MESSAGE)变量,默认为 NO_SOURCE_PERMISSIONS 选项。安装脚本使用 install() 命令产生,install()命令使用了 INSTALL 选项并附带一些内部选项供内部使用。
标签:...,CMake,文件,GLOB,路径,文件夹,FILE,Filesystem,PERMISSIONS From: https://www.cnblogs.com/jdi-2022/p/16867252.html