在CMake中,file()
函数是一个多功能命令,用于执行与文件相关的操作,例如读取、写入、复制、删除文件,以及操作文件系统路径等。它提供了许多子命令来处理不同的文件操作需求。
以下是 file()
函数的一些常用子命令及其用法:
1. 读取文件
READ
: 读取文件内容并存储到变量中。
cmake
file(READ <filename> <variable> [OFFSET <offset>] [LIMIT <max-in>] [HEX])
示例:
cmake
file(READ "example.txt" content)
message("File content: ${content}")
STRINGS
: 从文件中提取字符串并存储到变量中。
cmake
file(STRINGS <filename> <variable> [<options>...])
示例:
cmake
file(STRINGS "example.txt" lines)
foreach(line IN LISTS lines)
message("Line: ${line}")
endforeach()
2. 写入文件
WRITE
: 将内容写入文件(覆盖原有内容)。
cmake
file(WRITE <filename> <content>...)
示例:
cmake
file(WRITE "output.txt" "Hello, World!")
APPEND
: 将内容追加到文件末尾。
cmake
file(APPEND <filename> <content>...)
示例:
cmake
file(APPEND "output.txt" "\nThis is a new line.")
3. 文件操作
COPY
: 复制文件或目录。
cmake
file(COPY <files>... DESTINATION <dir> [FILE_PERMISSIONS <permissions>...] [DIRECTORY_PERMISSIONS <permissions>...])
示例:
cmake
file(COPY "source.txt" DESTINATION "destination/")
REMOVE
: 删除文件或目录。
cmake
file(REMOVE [RECURSE] <files>...)
示例:
cmake
file(REMOVE "file_to_delete.txt")
RENAME
: 重命名文件或目录。
cmake
file(RENAME <oldname> <newname>)
示例:
cmake
file(RENAME "old_name.txt" "new_name.txt")
4. 目录操作
GLOB
: 使用通配符匹配文件列表。
cmake
file(GLOB <variable> [LIST_DIRECTORIES true|false] [RELATIVE <path>] [<globbing-expressions>...])
示例:
cmake
file(GLOB sources "src/*.cpp")
MAKE_DIRECTORY
: 创建目录。
cmake
file(MAKE_DIRECTORY <directories>...)
示例:
cmake
file(MAKE_DIRECTORY "new_directory")
REMOVE_RECURSE
: 递归删除目录及其内容。
cmake
file(REMOVE_RECURSE <files>...)
示例:
cmake
file(REMOVE_RECURSE "directory_to_delete")
5. 路径操作
RELATIVE_PATH
: 计算相对路径。
cmake
file(RELATIVE_PATH <variable> <directory> <file>)
示例:
cmake
file(RELATIVE_PATH relative_path "/home/user" "/home/user/project/file.txt")
message("Relative path: ${relative_path}")
TO_CMAKE_PATH
: 将系统路径转换为CMake路径格式。
cmake
file(TO_CMAKE_PATH "<path>" <variable>)
TO_NATIVE_PATH
: 将CMake路径转换为系统路径格式。
cmake
file(TO_NATIVE_PATH "<path>" <variable>)
6. 文件校验
SHA256
** / **MD5
: 计算文件的哈希值。
cmake
file(<algorithm> <filename> <variable>)
示例:
cmake
file(SHA256 "example.txt" file_hash)
message("SHA256 hash: ${file_hash}")
7. 文件下载
DOWNLOAD
: 从URL下载文件。
cmake
file(DOWNLOAD <url> <file> [<options>...])
示例:
cmake
file(DOWNLOAD "https://example.com/file.txt" "downloaded_file.txt")
总结
file()
函数是CMake中非常强大的工具,可以用于处理文件、目录和路径相关的各种操作。根据具体需求选择合适的子命令即可。如果需要更详细的信息,可以参考 CMake官方文档。