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(
[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
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(
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条)