首页 > 其他分享 >[CMake] FILE指令-Filesystem

[CMake] FILE指令-Filesystem

时间:2022-11-08 10:15:26浏览次数:42  
标签:... CMake 文件 GLOB 路径 文件夹 FILE Filesystem PERMISSIONS

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

相关文章