-
file
: File manipulation command.file(WRITE filename "message to write"... )
file(APPEND filename "message to write"... )
file(READ filename variable [LIMIT numBytes] [OFFSET offset] [HEX])
file(STRINGS filename variable [LIMIT_COUNT num]
[LIMIT_INPUT numBytes] [LIMIT_OUTPUT numBytes]
[LENGTH_MINIMUM numBytes] [LENGTH_MAXIMUM numBytes]
[NEWLINE_CONSUME] [REGEX regex]
[NO_HEX_CONVERSION])
file(GLOB variable [RELATIVE path] [globbing expressions]...)
file(GLOB_RECURSE variable [RELATIVE path]
[FOLLOW_SYMLINKS] [globbing expressions]...)
file(REMOVE [file1 ...])
file(REMOVE_RECURSE [file1 ...])
file(MAKE_DIRECTORY [directory1 directory2 ...])
file(RELATIVE_PATH variable directory file)
file(TO_CMAKE_PATH path result)
file(TO_NATIVE_PATH path result)
file(DOWNLOAD url file [TIMEOUT timeout] [STATUS status] [LOG log])WRITE : 向文件 'filename'中写入一个信息. 存在则覆盖,不存在则创建.
APPEND :同 WRITE, 但会加到文件末尾
READ :从文件中读取信息到变量. 从 offset 开始读取 numBytes bytes. 如果设定参数 HEX, 二进制数据将会转成十六进制数据存到变量中.
STRINGS : 解析文件中的一列ASCII 字符串存到一个变量中. 文件中二进制数据被忽略. 换行字符被忽略. 同时对 Intel Hex 和 Motorola S-record 文件有效, 读取时候自动转换成二进制形式. 使用 NO_HEX_CONVERSION 无效.
LIMIT_COUNT : 设定返回的最大字符串数目. LIMIT_INPUT :设定从输入文件中读取的最大byte数. LIMIT_OUTPUT :设定存入输出变量中的最大byte数. LENGTH_MINIMUM :设定返回的最小字符串长度. 更短字符串被忽略. LENGTH_MAXIMUM :设定返回的最大字符串长度. 更长的字符串被切割. NEWLINE_CONSUME :允许字符串中包含换行符.
REGEX :指定返回一个与正则表达式匹配的字符串. 使用形式
file(STRINGS myfile.txt myfile)
变量 "myfile"中存储一张表 每一项对于输入文件中的一行.
GLOB :产生一张与全局表达式匹配的所有文件的表 并存入指定变量中. 全局表达式与正则表达式类似, 但更简单. 如果 RELATIVE 被指定为一个表达式, 结果将返回给定的路径为相对路径
全局表达式有如下例子:
*.cxx - 匹配所有后缀 cxx 的文件
*.vt? - 匹配所有后缀 vta,...,vtz 的文件
f[3-5].txt - 匹配 f3.txt, f4.txt, f5.txtGLOB_RECURSE :与 GLOB 类似, 但会遍历匹配路径下面的所有子路径并匹配文件. 只有当 FOLLOW_SYMLINKS 给定时,子路径才会当符号链接遍历 或者cmake policy CMP0009 为被设定为 NEW. 参见 cmake --help-policy CMP0009 .
recursive globbing 例子:
/dir/*.py - match all python files in /dir and subdirectories 匹配/dir中及子路径中的所有python文件
MAKE_DIRECTORY : 创建给定路径,如果父路径不存在
REMOVE : 删除给定文件,包括子路径
REMOVE_RECURSE : 删除给定文件和路径,包括非空路径
RELATIVE_PATH : 确定路径到确定文件的相对路径
TO_CMAKE_PATH :路径转换成cmake类型的路径'/'.输入可以是一个简单的路径或是系统路径"$ENV{PATH}".注意双引号中的ENV调用TO_CMAKE_PATH只带有一个参数。
TO_NATIVE_PATH :与 TO_CMAKE_PATH类似, 从cmake路径形式转换为一般形式 windows'\' , UNIX'/' .
DOWNLOAD : 从给定URL中下载到给定文件. 如果 LOG 变量设定,下载日志将会放入变量中. 如果STATUS 变量 被设定, 操作状态将会放入变量中. 状态以长度为2的表返回. 第一个参数返回的是操作值, 第二个返回的是错误字符串. 0表示没有错误. 如果 TIMEOUT time 设定, 操作在 time 秒后 超时, time 可设定为float类型.