Jian's Note

It's better to burn out than fade away!

CMake 笔记 | [44] 验证自己生成的库

一、导言 引用 经过上一篇(CMake:输出库(像其他优秀的库一样优雅)),我们已经构建出了优雅的库。本篇,我们将基于上一篇的内容,写一个简单的使用demo进行验证! 二、项目结构 1 2 3 . ├── CMakeLists.txt └── use_message.cpp 项目地址: https://gitee.com/jiangli01/tutorials/tree/master/cmake-tutorial/chapter9/04 三、相关源码 CMakeLists.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 cmake_minimum_required(VERSION 3.5 FATAL_ERROR) project(use-message LANGUAGES CXX ) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_PREFIX_PATH /home/jiangli/repo/tutorials/cmake-tutorial/chapter9/03/output/share/cmake/example) find_package(message REQUIRED

CMake 笔记 | [43] 输出库

一、导言 引用 前面的笔记中(CMake:静态库和动态库的详解(Linux/Windows)),展示了如何输出动态库和静态库,但是存在一些问题,如只输出了其头文件、符号表和库文件,但实际我们希望,当其他人编译并安装了我们的库,库就能更容易找到,如配置完环境变换或者指定库的路径。这篇笔记将展示CMake如

CMake 笔记 | [42] 导出头文件

一、导言 引用 其实,本篇的相关内容已经在CMake:静态库和动态库的详解(Linux/Windows)笔记中已经详细介绍了具体使用方法,且展示了CMake提供了与平台无关的方式实现的功能。但是,没有处理符号可见性的问题。关于符号的可见性的最佳方式是规定动态库只公开最小的符号,从而限制代码中定义的对象和

CMake 笔记 | [41] 安装项目

一、导言 导言 这篇笔记,将通过一个小项目来介绍一些基本概念,这些概念也将在后面的笔记中使用。安装文件、库和可执行文件是一项非常基础的任务,但是也可能会带来一些问题。通过这篇笔记,展示如何使用CMake有效地避开这些问题。 二、项目结构 1 2 3 4 5 6 7 8 9 . ├── CMakeLists.txt ├── src │ ├── CMakeLists.txt │ ├── hello_world.cpp │ ├── message.cpp │ └

CMake 笔记 | [40] 超级构建模式

一、导言 导言 每个项目都需要处理依赖关系,使用**CMake很容易查询这些依赖关系,是否存在于配置项目中。前面的笔记中,展示了如何找到安装在系统上的依赖项,到目前为止我们一直使用这种模式。但是,当不满足依赖关系,我们只能使配置失败,并向用户警告失败的原因。然而,使用CMake可以组织我们的项目,如果在

CMake 笔记 | [39] 构建项目策略及限制变量范围2

一、导言 导言 本篇,我们将讨论上一篇的另一种方法,并不使用add_subdirectory的情况下,使用module include组装不同的CMakeLists.txt文件。其允许我们使用target_link_libraries链接到当前目录之外定义的目标。 就项目架构而言,不推荐本篇的构建方式。 二、

CMake 笔记 | [38] 构建项目的策略及限制变量的范围和副作用

一、导言 导言 我们将讨论构建项目的策略,并限制变量的范围和副作用,目的是降低代码的复杂性和简化项目的维护。本篇,我们将把一个项目分割成几个范围有限的CMakeLists.txt文件,这些文件将使用add_subdirectory命令进行处理。 将源文件分割成更小、更易于管理的单元是有意义的。可以将所有源

CMake 笔记 | [37] 使用废弃函数、宏和变量

一、导言 导言 废弃是在不断发展的项目开发过程中一种重要机制,它向开发人员发出信号,表明将来某个函数、宏或变量将被删除或替换。在一段时间内,函数、宏或变量将继续可访问,但会发出警告,最终可能会上升为错误。 二、项目结构 1 2 3 4 . ├── cmake │ └── custom_guard.cmake └── CMakeLists.txt 项目结构: https://gitee.com/jiangli01/tutorials/tree/master/cmake-tutorial/chapter7/06 三、相关源码 CMakeLists.txt 1 2 3 4 5 6 7 8 9 10 11 12 13

CMake 笔记 | [36] 用指定参数定义函数或宏

一、导言 导言 前面的笔记中,我们研究了函数和宏,并使用了位置参数。本篇,我们将定义一个带有命名参数的函数。我们将复用第1节中的代码,使用函数和宏重用代码。 二、项目结构 1 2 3 4 5 6 7 8 9 10 11 12 13 . ├── cmake │ └── testing.cmake ├── CMakeLists.txt ├── src │ ├── CMakeLists.txt │ ├── main.cpp │ ├── sum_integers.cpp │ └── sum_integers.hpp └── tests ├── catch.hpp ├── CMakeLists.txt └── test.cpp https://gitee.com/jiangli01/tutorials/tree/master/cmake-tutorial/chapter7/04

CMake 笔记 | [35] 重新定义函数和宏

一、导言 引用 模块包含不应该用作函数调用,因为模块可能被包含多次。本篇,我们将编写我们自己的包含保护机制,如果多次包含一个模块,将触发警告。内置的include_guard命令从3.10版开始可以使用,对于C/C++头文件,它的行为就像#pragma一样。对于当前版本的CMake,我们将演示如何重新定
0%