当前位置:   article > 正文

cmake进阶:文件操作之写文件

cmake进阶:文件操作之写文件

一.  简介

cmake 提供了 file() 命令可对文件进行一系列操作,譬如读写文件、删除文件、文件重命名、拷贝文件、创建目录等等。 接下来 学习这个功能强大的 file() 命令。
本文学习 CMakeLists.txt语法中写文件操作。

二.  cmake进阶:文件操作之写文件

1.   写文件:写、追加内容

使用 file() 命令写文件,使用方式如下所示:
  1. file(WRITE <filename> <content>...)
  2. file(APPEND <filename> <content>...)
<content> 写入名为 <filename> 的文件中。如果文件不存在,它将被创建;
如果文件已经存在, WRITE 模式将覆盖它, APPEND 模式将内容追加到文件末尾。
准备一个工程,在工程根目录下的 CMakeLists.txt文件中加入如下代码:
  1. # file()写文件测试
  2. file(WRITE wtest.txt "Hello World!") #给定内容生成 wtest.txt 文件
  3. file(APPEND wtest.txt " China") #给定内容追加到 wtest.txt 文件末尾
注意文件可以使用绝对路径或相对路径指定,相对路径被解释为相对于当前源码路径。

进入工程 build目录下,执行 "cmake .."命令后,会在当前源码目录下生成一个名为 wtest.txt 的件,如下所示:

接着查看 wtest.txt 文件中内容,如下所示:

2. 写文件:由内容生成文件

由内容生成文件的命令为:

  1. file(GENERATE OUTPUT output-file
  2. <INPUT input-file|CONTENT content>
  3. [CONDITION expression])
output-file :指定输出文件名,可以带路径(绝对路径或相对路径);
INPUT input-file :指定输入文件,通过输入文件的内容来生成输出文件;
CONTENT content :指定内容,直接指定内容来生成输出文件;
CONDITION expression :如果表达式 expression 条件判断为真,则生成文件、否则不生成文件。

同样,指定文件既可以使用相对路径、也可使用绝对路径,不过在这里,相对路径被解释为相对于当前源码的 BINARY_DIR 路径,而不是当前源码路径。

在工程根目录下的 CMakeLists.txt文件中加入如下代码:

  1. # 由前面生成的 wtest.txt 中的内容去生成 out1.txt 文件
  2. file(GENERATE OUTPUT out1.txt INPUT "${PROJECT_SOURCE_DIR}/wtest.txt")
  3. # 由指定的内容生成 out2.txt
  4. file(GENERATE OUTPUT out2.txt CONTENT "This is the out2.txt file")
  5. # 由指定的内容生成 out3.txt,加上条件控制,用户可根据实际情况
  6. # 用表达式判断是否需要生成文件,这里只是演示,直接是 1
  7. file(GENERATE OUTPUT out3.txt CONTENT "This is the out3.txt file" CONDITION 1)

注意:这里 Linux系统上的 cmake安装的哪个版本,则在 CMakeLists.txt中关于最低版本需要设置为 所安装的  cmake版本号。否则,会在下一步 "cmake .." 命令后报错。

进入到 build 目录下执行 " cmake .." 命令

执行完 cmake 之后会在 build 目录(也就是顶层源码的 BINARY_DIR )下生成了 out1.txt out2.txt 和 out3.txt 三个文件,内容如下:

关于 cmake写文件学习到这里。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/548957
推荐阅读
相关标签
  

闽ICP备14008679号