Jian's Note

It's better to burn out than fade away!

CMake 笔记 | [24] 构建时运行自定义命令add_custom_command

一、导言 引用 项目的构建目标取决于命令的结果,这些命令只能在构建系统生成完成后的构建执行。CMake提供了三个选项来在构建时执行自定义命令: 使用add_custom_command编译目标,生成输出文件。 add_custom_target的执行没有输出。 构建目标前后,add_custom_comman

CMake 笔记 | [23] 配置时运行自定义命令

一、导言 导言 已经好久好久没有更新这个系列了,但是无论如何这个系列一定会以较全面的形式更新完成,只是在时间上可能比较拖沓。没有更新的原因也是最近一个月在做一个项目,没日没夜的度过了一个多月的加班加点的生活。 我们言归正传,通过前面的学习,我们已经了解了CMake如何在配置时运行许多子任务,以便找到工作的

CMake 笔记 | [22] 测试的其他补充(重要)

一、导言 Original jjjstephen Hope Hut 2023-09-21 09:03 Posted on 天津 导言 通过前几篇的学习,我们基本掌握了关于单元测试的相关内容。当然,随着技术的不断发展,根据不同业务的需求测试框架层出不穷,我们没有办法一一列举。本篇我们将补充几个测试的相关技术,如预期失败、并行测试以及测试子集等。 二、预期测试失败 理想情况下,我们希望所有的测试能在每个平台

CMake 笔记 | [21] 利用Valgrind来检测内存缺陷

一、导言 导言 *目前,内存缺陷:写入或读取越界,或者内存泄漏(已分配但从未释放的内存),会生产难以跟踪的*bug*,最好尽早将它们检查出来。**Valgrind*是一个通用的工具,用来检测内存缺陷和内存泄漏。本篇将在使用*CMake/CTest*测试时使用*Valgrind*对内存问题进行警告。 二、V

CMake 笔记 | [20] 利用Google Test库进行单元测试

一、导言 导言 本篇,我们将学习如何在CMake的帮助下使用Google Test框架实现单元测试。与前一个配置(Catch2)相比,Google Test框架不仅仅是一个头文件,也是一个库,包含两个需要构建和链接的文件。可以将它们与我们的代码项目放在一起,但是为了使项目更加轻量级,我们将选择在配置时,下载

CMake 笔记 | [19] 利用Catch2库进行单元测试

一、导言 导言 *上一篇,我们通过返回码来表示**test.cpp*测试的成功或者失败。对于简单的功能没问题,但是通常情况下,我们想要使用一个测试框架,它提供了相关基础设施来运行更复杂的测试,包括固定方式进行测试,与数值公差进行比较,以及在测试失败时输出更好的错误报告。本篇,通过使用目前比较流行的测试库

CMake 笔记 | [18] 利用CTest进行单元测试

一、导言 导言 CTest是CMake的测试工具,本篇通过编写和测试能够对整数求和的代码,以窥探CTest其中的功能一二。为了说明CMake没有对实际测试的语言进行任何限制,我们不仅使用C++可执行文件测试代码,还使用Python脚本和shell脚本作为测试代码。为了简单起见,我们将不使用任何测试库来实

CMake 笔记 | [17] 检测外部库 -- 自定义find模块

一、导言 导言 目前上一篇,我们了解了CMake其中一种自定义检测外部库的方式,本篇将展示通过编写一个find模块来定位系统上的ZeroMQ库,以能够在非操作系统上检测该库。 二、项目结构 1 2 3 4 5 . ├── CMakeLists.txt ├── FindZeroMQ.cmake ├── zmq_client.cpp └── zmq_server.cpp 项目地址: https://gitee.com/jiangli01/tutorials/tree/master/cmake-tutorial/chapter3/06 注:相关cpp源码与上一篇相同。 CMakeLists.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14

CMake 笔记 | [16] 检测外部库---使用pkg-config

一、检测外部库—使用pkg-config 导言 前面几篇内容的学习,我们基本上了解了如何链接一个三方库的方法。本篇以及下一篇将补充两个检测外部库的方法。 目前为止,我们已经学习了两种检测外部依赖关系的方法: 使用CMake自带的find-module,但并不是所有的包在CMake的find模块都

CMake 笔记 | [15] 检测并使用OpenMP的并行环境

一、检测并使用OpenMP的并行环境 导言 目前,市面上的计算机几乎都是多核机器,对于性能敏感的程序,我们必须关注这些多核处理器,并在编程模型中使用并发。OpenMP是多核处理器上并行性的标准之一。为了从OpenMP并行化中获得性能收益,通常不需要修改或重写现有程序。一旦确定了代码中的性能关键部分,例如
0%