CMake
文章平均质量分 91
老狼主
工作中展现自我,学习中完善自我,生活中乐活自我!
展开
-
CMake应用:基础篇
CMake是一个开源、跨平台的编译、测试和打包工具,它使用比较简单的语言描述编译、安装的过程,输出Makefile或者project文件,再去执行构建。在使用IDE开发软件的过程中,代码的编译和构建一般是使用IDE自带的编译工具和环境进行编译,开发者参与的并不算多。如果想要控制构建的细节,则需要开发者自己定义构建的过程。本文主要介绍以下内容: 编译构建相关的核心概念及它们之间的关系 CMake的一般使用流程 一个简单的实例 一 核心概念1 gcc、make和cm.转载 2021-11-29 11:31:02 · 2175 阅读 · 0 评论 -
CMake应用:核心语法篇
本文是深入CMakeLists.txt之前的前导文章,介绍CMake语言的核心概念,以及常用的CMake脚本命令,以期对CMake的语法能有比较好的认知和实践基础。在前一篇文章中介绍了CMake的核心概念,使用的一般流程,并通过一个实例讲解了CMake命令行工具之一的cmake命令的使用方法。该系列文章请关注本公众号的话题:#CMake,成为CMake高手指日可待。在开始深入如何编写完备的CMakeLists.txt之前,先了解下CMake的语言和它的组织方式对后续内容的理解是很有帮助的。..转载 2021-11-29 11:29:43 · 458 阅读 · 0 评论 -
CMake应用:CMakeLists.txt完全指南
CMake通过CMakeLists.txt配置项目的构建系统,配合使用cmake命令行工具生成构建系统并执行编译、测试,相比于手动编写构建系统(如Makefile)要高效许多。对于C/C++项目开发,非常值得学习掌握。在前两篇文章中已经介绍CMake的相关核心概念,使用的一般流程,以及CMake核心的语法和常用脚本命令: CMake应用:基础篇 CMake应用:核心语法篇 本文将会介绍如何书写一个完备的CMakeLists.txt文件,满足一般项目的基础构建要求,CMake的语法.转载 2021-11-29 11:28:39 · 1202 阅读 · 0 评论 -
CMake应用:模块化及库依赖
当项目比较大的时候,往往需要将代码划分为几个模块,可能还会分离出部分通用模块,在多个项目之间同时使用;当然,也可能是依赖开源的第三方库,在项目中包含第三方源代码或者编译好的库文件。本文将会介绍CMake中如何模块化地执行编译,以及指定目标对相应库文件的依赖。在上一篇文章中,笔者介绍了一个比较完备的CMakeists.txt该如何书写。往期文章可以关注本号的话题:CMake,文章列表如下(文末可连续阅读):CMake应用:基础篇CMake应用:核心语法篇CMake应用:CMakeLists.转载 2021-11-29 11:27:41 · 1435 阅读 · 0 评论 -
CMake应用:集成gtest进行单元测试
编写代码有bug是很正常的,通过编写完备的单元测试,可以及时发现问题,并且在后续的代码改进中持续观测是否引入了新的bug。对于追求质量的程序员,为自己的代码编写全面的单元测试是必备的基础技能,在编写单元测试的时候也能复盘自己的代码设计,是提高代码质量极为有效的手段。在本系列前序的文章中已经介绍了CMake很多内容,本文是针对单元测试的外延。本系列更多精彩文章敬请关注公众号【很酷的程序员】的话题:CMake。本文主要介绍以下几个方面的内容: 何为单元测试 何为gtest .转载 2021-11-29 11:26:54 · 1527 阅读 · 0 评论 -
CMake应用:安装和打包
为了方便使用项目编译的目标文件,快速部署到目标目录,可以使用CMake的安装功能;如果需要对外发布,提供头文件、库文件、或者demo的压缩包则可以使用CMake的打包功能。在本系列前序的文章中已经介绍了CMake很多内容,在CMake应用:CMakeLists.txt完全指南一文中简略介绍了安装和打包,本文会更加深入地介绍CMake的安装打包功能。本系列更多精彩文章敬请关注公众号【很酷的程序员】的话题:CMake。本文主要介绍以下几个方面的内容: 安装库文件、可执行文件和所需要对外提供的头.转载 2021-11-29 11:25:41 · 4669 阅读 · 0 评论 -
CMake应用:从编译过程理解CMake
CMake和编译的过程是有对应关系的,理解了编译构建的过程,可以更加理解CMake的相关命令;理解其目的和用途,自然也就可以更好地运用CMake。在最近的CMake系列文章中,有小伙伴在实践使用的时候还是比较困惑,沟通之后了解到可能有的同学并不是计算机专业,对于编译原理、编译的过程可能并没有很了解,所以笔者写了一篇文章:GCC编译过程概述对GCC编译的过程做了一个概述。本文作为这篇文章的姊妹篇,依旧以GCC为例,在对GCC编译过程有一定了解的基础上,来进一步理解CMake如何通过CMak.转载 2021-11-29 11:23:37 · 1702 阅读 · 0 评论 -
CMake应用:交叉编译
交叉编译指的在一个平台上生成另一个平台上的可执行代码。很多时候,开发的代码可能并不只是在开发主机的平台上执行,比如在Windows下开发的程序,希望能够在Linux、或者MacOS下执行;或者有时候目标平台根本就没有操作系统,没有对应的编译器,所以必然需要进行交叉编译。交叉编译笔者在工作中经常会遇到。笔者开发使用的宿主机一般都是Linux(Ubuntu),交叉编译的目的基本都是为了将程序代码编译成目标嵌入式平台的库文件,然后再在目标系统上调用集成,一般都是ARM系列的CPU。而对于不同操作系统(Wi.转载 2021-11-29 11:22:39 · 8285 阅读 · 2 评论 -
CMake应用:合并静态库
在实际项目中,往往需要将一些基础库或者算法库发布出去,但是不同项目可能需要用到不同的子模块,此时为了保持简洁,可能需要合并多个静态库为一个。在笔者的实际工作中,合并静态库的需求还是有的,而且大多数时候都是基于CMake的项目,所以希望能够基于不同配置,自动合并多个模块的静态库为一个,方便发布版本和管理。本文介绍的就是如何在CMake工程中,优雅地完成多个静态库目标的合并。本文仍以本系列的开源项目https://gitee.com/RealCoolEngineer/cmake-template为例.转载 2021-11-29 11:21:30 · 4380 阅读 · 2 评论 -
CMake应用:生成器表达式
目录 一 概述 二 常用的生成器表达式 1 布尔生成器表达式 2 字符串值生成器表达式 3 调试 CMake的生成器表达式不算是特别常用,但是有一些场景可能是必须要使用的;或者在针对不同编译类型设置不同编译参数的时候可以巧妙应用,从而减少配置代码。生成器表达式听起来稍微有点复杂,但是其实只需要掌握一些常用的功能就能够有所裨益,至于更加复杂的写法,在需要的时候研究一下即可。本文主要介绍下生成器表达式的概念、种类、和常用的一些生成器表达转载 2021-11-29 11:18:59 · 1535 阅读 · 2 评论