欢迎来真孝善网,为您提供真孝善正能量书籍故事!

深入解析C++编程语言:核心技术与应用案例

时间:11-16 民间故事 提交错误

1681710206374.png

1681710240060.png

2. 文件STRINGS命令

file STRINGS 命令将文件内容读入一串ASCII 字符串并存入变量中。二进制文件将被忽略。读取文件时Enter 和r 将被忽略:

文件(字符串[.])

3. 文件

4. 文件时间戳

2、写文件操作

1.文件写命令

2.文件APPEND命令

3.文件TOUCH命令

4. 文件生成命令

3. 文件系统

1.文件GLOB命令

file GLOB命令主要用于匹配规则,匹配指定目录下所需的文件。命令行格式为:

文件(GLOB[LIST_DIRECTORIES true[false]] [RELATIVE] [CONFIGURE_DEPENDS] [.])

LIST_DIRECTORIES true[false]: 如果为false,则将省略目录。默认情况下,返回目录。

RELATIVE: 相对路径返回的结果不会是绝对路径,而是会去掉绝对路径的一部分,返回相对路径。

CONFIGURE_DEPENDS: 如果设置了此标志位,则主构建系统将检查目标添加逻辑,并且必须在构建期间重新运行标记的GLOB 命令。

:匹配表达式,该表达式与正则匹配类似,如下:

*.cxx - 匹配所有扩展名为cxx 的文件

*.vt? - 匹配所有扩展名为vta,vtz 的文件

f[3-5].txt - 匹配文件f3.txt、f4.txt、f5.txt

1681710380049.pngu013250861

发表于2022-11-20 10:55:06

2364

收藏4

分类专栏:#C++/CMAKE 文章标签:c++ CMAKE

版权

C++/CMAKE

该栏目包含此内容

35 篇文章0 订阅

订阅专栏

在使用cmake文件操作时,不可避免的要对相关文件进行操作,比如读取文件内容、创建新文件等,这些都需要通过file命令来执行。

1、读文件操作

1.文件读取命令

从文件读取常用的操作是file(READ),它将filename文件的内容原封不动地读入变量变量中。整个命令行格式为:

文件(读取[偏移] [限制] [十六进制])

filename:是必选选项,是要读取的文件。它可以有绝对路径。

需要variable:它将文件内容读取到variable变量中。

OFFSET:可选,从文件中的偏移位置开始读取文件内容

HEX:可选,可以将读取的文件内容转换为十六进制。

LIMIT: 可选读取内容到变量的最大长度

我们举个例子来说明,实验目录下有两个文件。使用tree命令查看:

$ 树。

CMakeLists.txt

测试.cpp

0个目录,2个文件

$

test.cpp文件内容如下:

include

include

int main(){

printf("你好世界!n");

}

CMakeList.txt文件内容如下:

cmake_minimum_required(版本3.13.4)

项目(cmake_read)

消息("--------Proj Src Dir:"{PROJECT_SOURCE_DIR}/test.cpp TEST_RESULT)

消息("--------测试结果:"${TEST_RESULT})

使用file(read)命令将文件test.cpp的内容读取到TEST_RESULT变量中,打印出来,然后使用cmake运行:

cd 构建/

[huozhikun@login09 build]$ /public/home/huozhikun/cmake/cmake-3.17.0/bin/cmake .

-- C 编译器标识为GNU 7.3.1

-- CXX编译器标识为GNU 7.3.1

-- 检查C 编译器是否正常工作: /opt/rh/devtoolset-7/root/usr/bin/cc

-- 检查C 编译器是否正常工作: /opt/rh/devtoolset-7/root/usr/bin/cc - 有效

-- 检测C编译器ABI信息

-- 检测C 编译器ABI 信息- 完成

-- 检测C编译特性

-- 检测C 编译功能- 完成

-- 检查CXX 编译器是否正常工作: /opt/rh/devtoolset-7/root/usr/bin/c++

-- 检查工作CXX 编译器: /opt/rh/devtoolset-7/root/usr/bin/c++ - 工作

-- 检测CXX编译器ABI信息

-- 检测CXX 编译器ABI 信息- 完成

-- 检测CXX编译特性

-- 检测CXX 编译功能- 完成

--------Proj Src Dir: /public/home/huozhikun/test/cmake/read/example

--------测试结果: #include

include

int main(){

printf("你好世界!n")

}

--配置完成

-- 生成完成

-- 构建文件已写入: /public/home/huozhikun/test/cmake/read/example/build

将test.cpp 的文件内容完整读取到TEST_RESULT 变量中。

2. 文件STRINGS命令

file STRINGS 命令将文件内容读入一串ASCII 字符串并存入变量中。二进制文件将被忽略。读取文件时Enter 和r 将被忽略:

文件(字符串[.])

3. 文件

4. 文件时间戳

2、写文件操作

1.文件写命令

2.文件APPEND命令

3.文件TOUCH命令

4. 文件生成命令

3. 文件系统

1.文件GLOB命令

file GLOB命令主要用于匹配规则,匹配指定目录下所需的文件。命令行格式为:

文件(GLOB[LIST_DIRECTORIES true[false]] [RELATIVE] [CONFIGURE_DEPENDS] [.])

LIST_DIRECTORIES true[false]: 如果为false,则将省略目录。默认情况下,返回目录。

RELATIVE: 相对路径返回的结果不会是绝对路径,而是会去掉绝对路径的一部分,返回相对路径。

CONFIGURE_DEPENDS: 如果设置了此标志位,则主构建系统将检查目标添加逻辑,并且必须在构建期间重新运行标记的GLOB 命令。

:匹配表达式,该表达式与正则匹配类似,如下:

*.cxx - 匹配所有扩展名为cxx 的文件

*.vt? - 匹配所有扩展名为vta,vtz 的文件

f[3-5].txt - 匹配文件f3.txt、f4.txt、f5.txt

用例

cmake_minimum_required(版本3.13.4)

项目(cmake_文件系统)

消息("--------Proj Src Dir: " ${CMAKE_CURRENT_SOURCE_DIR})

文件(GLOB TEST_RESULT LIST_DIRECT true RELATIVE /public/home *.cpp)

消息("--------TEST_RESULT: ${TEST_RESULT}")

在当前路径下搜索cpp文件,返回结果为/public/home的相对路径。结果是:

$ /public/home/huozhikun/cmake/cmake-3.17.0/bin/cmake .

……

--------项目源目录Dir: /public/home/huozhikun/test/cmake/filesystem/example_3

--------TEST_RESULT: huozhikun/test/cmake/filesystem/example_3/test_2.cpp

……

2.文件GLOB_RECURSE命令

3.文件重命名命令

4.RENAME_RECURES

5. 文件MAKE_DIRECTORY命令

6. 文件复制命令

file COPY命令用于将文件复制到目标目录。命令行格式如下:

文件(复制.目标

[文件权限.]

[目录权限.]

[NO_SOURCE_PERMISSIONS] [USE_SOURCE_PERMISSIONS]

[文件匹配]

[[图案|正则表达式]

[排除] [权限.]]

[.]):要复制的源文件

DESTINATION:将源文件复制到目标目录

FILE_PERMISSIONS:修改源文件权限

DIRECTORY_PERMISSIONS:目录权限

NO_SOURCE_PERMISSIONS:不使用源文件权限,重新指定文件权限

USE_SOURCE_PERMISSIONS:使用源文件的权限。设置此选项后,将无法再使用FILE_PERMISSIONS 权限。支持的权限设置有:

OWNER_READ

OWNER_WRITE

OWNER_EXECUTE

组读

组_写

组_执行

世界_阅读

世界_写

世界执行

PATTERN 和REGEX:制定一些匹配规则

EXCLUDE: 不包含或排除某些特殊文件

7. 文件安装命令

4. 路径转换

1. 文件RELATIVE_PATH

2. 文件TO_CMAKE_PATH

用户评论

苍白的笑〃

C++真滴强悍啊,做系统开发用的很方便。

    有8位网友表示赞同!

枫无痕

C++语法确实有点复杂,需要好好学一学才能掌握。

    有17位网友表示赞同!

你tm的滚

想学软件工程,C++感觉是必修课。

    有19位网友表示赞同!

日久见人心

听说游戏引擎很多是用C++写的?

    有14位网友表示赞同!

伤离别

大学时学C++,感觉当时就太难了,现在回头一看还是蛮好用的。

    有18位网友表示赞同!

玻璃渣子

有没有什么好的C++学习资源推荐呀?

    有7位网友表示赞同!

柠夏初开

最近想尝试用C++开发下个人项目,不知道怎么样入门比较合适。

    有20位网友表示赞同!

还未走i

C++性能确实棒,对硬件充分利用嘛!

    有6位网友表示赞同!

ok绷遮不住我颓废的伤あ

C++内存管理需要特别关注,很容易出错。

    有8位网友表示赞同!

傲世九天

虽然学起来比较难,但一旦掌握了C++的精髓,开发效率真的高啊!

    有9位网友表示赞同!

烟雨离殇

C++是面向对象的语言吗?

    有10位网友表示赞同!

墨染天下

感觉C++应用场景很多,从游戏到金融都有它的身影。

    有11位网友表示赞同!

泡泡龙

C++是不是老旧一点的语言啊?现在还有人用吗?

    有18位网友表示赞同!

米兰

C++编译器那么多,你们用哪个比较顺手?

    有6位网友表示赞同!

糖果控

想学编程,C++太难了吧...

    有15位网友表示赞同!

清羽墨安

我对人工智能特别感兴趣,听说一些AI框架是用C++写的啊。

    有17位网友表示赞同!

巴黎盛开的樱花

用C++可以开发手机APP吗?

    有20位网友表示赞同!

南初

学习C++需要数学基础吗?

    有9位网友表示赞同!

葵雨

C++文档看不懂怎么办?

    有9位网友表示赞同!

封心锁爱

感觉程序员掌握C++能力真的很令人佩服!

    有7位网友表示赞同!

【深入解析C++编程语言:核心技术与应用案例】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活