CMakeFile命令之file

CMakeFile命令之file

2023年7月3日发(作者:)

CMakeFile命令之filefile:⽂件操作命令.WRITE 将⼀则信息写⼊⽂件’filename’中,如果该⽂件存在,它会覆盖它,如果不存在,它会创建该⽂件。file(APPEND filename "message to write"... )APPEND 如同WRITE,区别在于它将信息内容追加到⽂件末尾。

file(READ filename variable [LIMIT numBytes] [OFFSEToffset] [HEX])READ 会读取⽂件的内容并将其存⼊到变量中。它会在给定的偏移量处开始读取最多numBytes个字节。如果指定了HEX参数,⼆进制数据将会被转换成⼗进制表⽰形式并存储到变量中。file( filenamevariable)MD5, SHA1, SHA224, SHA256, SHA384, 和SHA512 会计算出⽂件内容对应的加密散列。file(STRINGS filename variable [LIMIT_COUNT num] [LIMIT_INPUT numBytes] [LIMIT_OUTPUTnumBytes] [LENGTH_MINIMUM numBytes] [LENGTH_MAXIMUMnumBytes] [NEWLINE_CONSUME] [REGEX regex] [NO_HEX_CONVERSION])STRINGS 从⽂件中解析出ASCII字符串列表并存储在变量中。⽂件中的⼆进制数据将被忽略。回车符(CR)也会被忽略。也能解析Intel Hex和Motorola S-record⽂件,这两种⽂件在读取是会⾃动转换为⼆进制格式,可以使⽤参数NO_HEX_CONVERSION 禁⽤这种⾃动转换。LIMIT_COUNT设置可返回的最⼤数量的字符串。LIMIT_INPUT 设置从输⼊⽂件中可读取的最⼤字节数。LIMIT_OUTPUT设置了存储在输出变量中最⼤的字节数。 LENGTH_MINIMUM设置了返回的字符串的最⼩长度。⼩于这个长度的字符串将被忽略。 LENGTH_MAXIMUM设置返回的字符串的最⼤长度。⼤于这个长度的字符串将被切分为长度不⼤于于最⼤长度值的⼦字符串。NEWLINE_CONSUME 允许换⾏符包含进字符串中⽽不是截断它们。REGEX 指定了返回的字符串必须匹配的正则表达式的模式。典型⽤法file(STRINGS myfile), 将输⼊⽂件的每⾏内容存储在变量"myfile"中。file(GLOB variable [RELATIVE path] [globbingexpressions]...)GLOB 会产⽣⼀个由所有匹配globbing表达式的⽂件组成的列表,并将其保存到变量中。Globbing 表达式与正则表达式类似,但更简单。如果指定了RELATIVE 标记,返回的结果将是与指定的路径相对的路径构成的列表。 (通常不推荐使⽤GLOB命令来从源码树中收集源⽂件列表。原因是:如果⽂件没有改变,即便在该源码树中添加或删除⽂件,产⽣的构建系统也不会知道何时该要求CMake重新产⽣构建⽂件。globbing 表达式包括: *.cxx - match all files with extension cxx *.vt? - match all files with extension vta,...,vtz f[3-5].txt - match files ,, e(GLOB_RECURSE variable [RELATIVE path]

[FOLLOW_SYMLINKS] [globbingexpressions]...)GLOB_RECURSE 与GLOB类似,区别在于它会遍历匹配⽬录的所有⽂件以及⼦⽬录下⾯的⽂件。对于属于符号链接的⼦⽬录,只有FOLLOW_SYMLINKS指定⼀或者cmake策略CMP0009没有设置为NEW时,才会遍历这些⽬录。Examples of recursive globbing include: /dir/*.py - match all python files in /dir and subdirectories

file(RENAME )RENAME 将⽂件系统中的⽂件或⽬录移动到⽬标位置,并⾃动替换⽬标位置处的⽂件或⽬录。

file(REMOVE [file1 ...])REMOVE 会删除指定的⽂件以及⼦⽬录下的⽂件。

file(REMOVE_RECURSE [file1 ...])REMOVE_RECURSE 会删除指定的⽂件及⼦⽬录,包括⾮空⽬录。

file(MAKE_DIRECTORY [directory1 directory2 ...])MAKE_DIRECTORY在指定⽬录处创建⼦⽬录,如果它们的⽗⽬录不存在,也会创建它们的⽗⽬录。file(RELATIVE_PATH variable directory file)RELATIVE_PAT推断出指定⽂件相对于特定⽬录的路径。file(TO_CMAKE_PATH path result)TO_CMAKE_PATH会将路径转换成cmake风格的路径表达形式。file(TO_NATIVE_PATH path result)TO_NATIVE_PATH与TO_CMAKE_PATH类似,但执⾏反向操作,将cmake风格的路径转换为操作系统特定风格的路径表式形式。file(DOWNLOAD url file [INACTIVITY_TIMEOUT timeout] [TIMEOUT timeout] [STATUS status] [LOGlog] [SHOW_PROGRESS] [EXPECTED_MD5 sum])DOWNLOAD下载指定URL的资源到指定的⽂件上。如果指定了LOG 参数,将会把下载的⽇志保存到相应的变量中。如果指定了STATUS变量,操作的状态信息就会保存在相应的变量中。返回的状态是⼀个长度为2的列表。第⼀个元素是操作的返回值。0表⽰操作过程中⽆错误发⽣。如果指定了TIMEOUT,单位于秒,且必须为整数,那么在指定的时间后,操作将会超时,INACTIVITY_TIMEOUT指定了操作在处于活动状态超过指定的秒数后,应该停⽌。如果指定了EXPECTED_MD5,如果操作会检验下载后的⽂件的实际md5校验和是否与预期的匹配,如果不匹配,操作将会失败,并返回相应的错误码。如果指定了 SHOW_PROGRESS,那么进度的信息将会被打印成状态信息直到操作完成。file(UPLOADfilename url [INACTIVITY_TIMEOUT timeout] [TIMEOUT timeout] [STATUS status][LOG log] [SHOW_PROGRESS])UPLOAD与DOWNLOAD类似,它执⾏的是⼀个上传操作。参数含义与DOWNLOAD ⼀致。 file( DESTINATION

[FILE_] [] [NO_SOURCE_PERMISSIONS][USE_SOURCE_PERMISSIONS] [FILES_MATCHING] [[PATTERN | REGEX] [EXCLUDE] []] [...])COPY表⽰复制⽂件,⽬录以及符号链接到⼀个⽬标⽂件夹中。输⼊路径将视为相对于当前源码⽬录的路径。⽬标路径则是相对于当前的构建⽬录。复制保留输⼊⽂件的⼀些权限属性,除⾮显式指定了NO_SOURCE_PERMISSIONS(默认是USE_SOURCE_PERMISSIONS),关于⽂件权限,PATTERN,REGX和EXCLUDE等相关选项可参考install(DIRECTORY)命令的⽂档。

INSTALL 与COPY略微有点不同:它打印状态信息,并且默认情况下指定了 NO_SOURCE_PERMISSIONS。测试例⼦:message(STATUS "current dir: ${CMAKE_CURRENT_SOURCE_DIR}")file(WRITE "Some messages to Writen" )file(APPEND "Another message to writen")file(READ CONTENTS LIMIT 4 OFFSET 12)message(STATUS "contents of is: n ${CONTENTS}")file(MD5 ${CMAKE_CURRENT_SOURCE_DIR}/ HASH_CONTENTS)message(STATUS "hash contents of is: n ${HASH_CONTENTS}")file(STRINGS PARSED_STRINGS)message(STATUS "n strings of is: n ${PARSED_STRINGS}")file(GLOB files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.*")message(STATUS "files: ${files}")file(MAKE_DIRECTORY dir1 dir2)file(RENAME dir2 dir3)file(REMOVE dir3)file(REMOVE_RECURSE dir3)file(RELATIVE_PATH relative_path ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/)message(STATUS "relative path : ${relative_path}")file(TO_CMAKE_PATH "$ENV{PATH}" cmake_path)message(STATUS "cmake path: ${cmake_path}")file(TO_NATIVE_PATH "/usr/local/sbin;/usr/local/bin" native_path)message(STATUS "native path: ${native_path}")file(DOWNLOAD "" ${CMAKE_CURRENT_SOURCE_DIR}/ SHOW_PROGRESS)file(COPY DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/dir1)file(INSTALL DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/dir1)

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688383217a129784.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信