Jian's Note
It's better to burn out than fade away!
一、导言 导言 前两篇,我们使用了宏。本篇,将使用一个函数来抽象细节并避免代码重复。我们将实现一个接受编译器标志列表的函数。该函数将尝试用这些标志逐个编译测试代码,并返回编译器理解的第一个标志。这样,我们将了解几个新特性:****函数、列表操作、字符串操作,以及检查编译器是否支持相应的标志。 二、项目结构
一、导言 导言 项目通常从单个**CMakeLists.txt文件开始,随着时间的推移,这个文件会逐渐增长。本篇,我们将演示一种将CMakeLists.txt分割成更小单元的机制。将CMakeLists.txt拆分为模块的动机:** 主CMakeLists.txt更易于阅读; CMake模块可以在其他项目中
一、导言 导言 任何编程语言中,函数允许我们抽象(隐藏)细节并避免代码重复,****CMake也不例外。我们将以宏和函数为例进行讨论,并介绍一个宏,以便方便地定义测试和设置测试的顺序。我们的目标是定义一个宏,能够替换add_test和set_tests_properties,用于定义每组和设置每个测试的
一、导言 导言 上一篇,在配置时记录了代码存储库(Git Hash)的状态。然而,该方法方法有一个令人不满意的地方,如果在配置代码之后更改分支或提交更改,则源代码中包含的版本记录可能指向错误的Git Hash值。本篇,我们将演示如何在构建时记录·Git Hash·(或者,执行其他操作),以确保每次构建代码时都
一、导言 导言 大多数现代源代码存储库都使用**Git作为版本控制系统进行跟踪,提交的Git Hash决定了源代码的状态。因此,为了标记可执行文件,尝试将Git Hash记录到可执行文件中,方法是将哈希字符串记录在一个头文件中,该头文件可以包含在代码中。** 二、项目结构 1 2 3 4 . ├── CMakeLists.txt ├── example.cpp └── version.hpp.in https://gitee.com/jiangli01/tutorials/tree/master/cmake-tutorial/chapter6/04 相
一、 导言 导言 本篇内容目的和上一篇相似,但是出发点不同。我们计划是从文件中读取版本信息,而不是将其设置在CMakeLists.txt中。将版本保存在单独文件中的目的,是允许其他构建框架或开发工具使用独立于**CMake的信息,而不需要将信息复制到多个文件中。** 二、项目结构 1 2 3 4 5 . ├── CMakeLists.txt ├── example.cpp
一、导言 导言 代码版本很重要,不仅是为了可重复性,还为了记录API功能或简化支持请求和bug报告。源代码通常处于某种版本控制之下,例如可以使用Git标记附加额外版本号。然而,不仅需要对源代码进行版本控制,而且可执行文件还需要记录项目版本,以便将其打印到代码输出或用户界面上。 本篇,将在CMake源文件中
一、导言 导言 代码生成在配置时发生,如 CMake可以检测操作系统和可用库;基于这些信息,可以定制构建的源代码。本篇我们将探索如何生成一个简单源文件,该文件定义了一个函数,用于报告构建系统配置。 二、项目结构 1 2 3 . ├── CMakeLists.txt └── print_info.c.in 项目地址: https://gitee.com/jiangli01/tutorials/tree/master/cmake-tutorial/chapter6/01 相关源码 CMakeLists.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
一、导言 导言 本篇通过展示如何使用来自对应的CheckSourceCompiles.cmake标准模块的check__source_compiles函数,以评估给定编译器是否可以将预定义的代码编译成可执行文件。该命令可帮助确定: 编译器支持所需的特性。 链接器工作正常,并理解特定的标志。 可以使用find_
一、导言 导言 add_custom_command 是 CMake 中用于添加自定义构建规则的命令,通常用于在编译项目时执行一些自定义操作,例如生成文件、运行脚本等。 二、项目结构 1 2 3 4 . ├── CMakeLists.txt ├── generate_config.cmake └── main.cpp 项目地址: https://gitee.com/jiangli01/tutorials/tree/master/cmake-tutorial/chapter5/03 相关源码 CMakeLists.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 cmake_minimum_required(VERSION 3.10) project(test_command) # 设置需要生成的头文件的路径 set(CONFIG_HEADER ${CMAKE_BINARY_DIR}/config.h) # 添加一个自定义命