【CMake】CMake从入门到实战系列(一)——CMake介绍以及安装方法


  在平时工作开发的项目中,Makefile和CMake我都使用过,我个人偏向喜欢用CMake。因为CMake的跨平台性,还有其易移植、易维护等等特性。下面我们开始CMake的总结。

一、CMake介绍

  “CMake"这个名字是"cross platform make"的缩写。虽然名字中含有"make”,但是CMake和Unix上常见的"make"系统是分开的,而且更为高阶。

1、CMake是一个强大的跨平台的编译工具,它使用配置文件(CMakeLists.txt)来生成标准的构建文件,能够输出各种各样的makefile或者project文件。
2、CMake并不直接构建出最终的软件,而是生成标准的Makefile文件或者VisualStudio项目文件,然后再使用Make或者VisualStudio进行编译。
3、CMake在Windows平台上生成VisualStudio项目文件,在Linux和Unix平台上生成Makefile文件。

二、CMake和Makefile的优缺点

  CMake和Makefile都是用于自动化软件构建过程的工具,但是它们在设计哲学、使用方式以及支持的特性上有着明显的不同。下面对两者做一个优缺点的比较:

1、CMake

优点:

跨平台: CMake可以为不同的编译环境生成相应的构建文件,如Unix Makefiles、Ninja、Visual Studio项目等。

便捷的语法: CMakeLists.txt文件有着较为简单和易读的语法,易于编写和维护。

高级功能: CMake提供了丰富的功能,如自动查找依赖库、编译器特性检测、测试和打包等,大大简化了多平台构建的复杂性。

可重用性: CMake中可以创建模块化的构建脚本,易于在多个项目之间共享和复用。

图形界面: 对于不熟悉命令行操作的用户,CMake提供了图形化界面工具(cmake-gui)。

缺点:

学习曲线: 对于新手来说,CMake的高级特性和内部工作机制需要一定的学习和实践才能掌握。

重度抽象: CMake定义了许多高级的构建概念,对于需要细粒度控制构建过程的情况,可能会显得过于复杂。

版本兼容性: CMake的不同版本之间存在差异,某些指令在不同版本的支持程度可能不同,需要注意。

2、Makefile

优点:

精细控制: Makefile为开发人员提供了对构建过程的细粒度控制,可以精确定义编译规则及其依赖关系。

广泛应用: Make是UNIX和Linux环境中传统且广泛使用的构建工具,有丰富的文档和社区支持。

简洁直接: 对于小型项目来说,编写一个简单的Makefile通常更直接。

无需额外工具: 几乎所有的UNIX-like系统都预装了make工具,无需安装其他软件即可使用。

缺点

可移植性差: Makefile通常和操作系统以及具体的shell环境绑定,需要为不同平台编写不同的Makefile。

可读性: 对于大型项目,Makefile可能会非常复杂,难以读懂和维护,特别是在包含多个目标和复杂依赖关系时。

重复劳动: 跨平台项目可能需要维护几套不同的Makefile,增加了工作量。

功能限制: 相对于CMake,Make本身的功能较为基础,对于复杂的构建过程需要手动编写大量规则。

  总结来说,CMake提供了更加抽象和高级的构建系统,对于跨平台的大型项目而言,其易用性和功能强大是巨大的优势。而Makefile对于小型项目和需要精确控制的构建过程也有它的用武之地。在具体选择时,需根据项目的实际需要、目标平台、团队的熟悉程度等因素综合考虑。

三、ubuntu安装CMake的几种方法

1、命令行安装
sudo apt-get update
sudo apt install cmake

  注意:此种方式安装的可能不是最新版本的CMake

2、CMake源码编译安装

先检查是否有cmake

【1】下载CMake源码。CMake源码下载地址:https://cmake.org/download/

【2】解压CMake源码。
tar -zxvf cmake-3.29.0.tar.gz

【3】进入解压后的CMake源码文件,执行bootstrap。

./bootstrap

可能会报以下错误:
在这里插入图片描述
提示找不到C++编译器,执行以下命令安装一下即可:

sudo apt-get install g++

然后重新执行./bootstrap。

可能会报以下错误:
在这里插入图片描述
提示安装 OpenSSL 开发包或使用 -DCMAKE_USE_OPENSSL=OFF 配置 CMake 以在不使用 OpenSSL 的情况下进行构建。选择安装开发包,执行以下指令即可:

sudo apt-get install libssl-dev

然后再次执行./bootstrap。

【4】编译CMake源码。

make

【5】安装

sudo make install
3、sh安装

下载指定版本的sh文件:https://cmake.org/download/

安装指令:

./cmake-3.29.0-linux-x86_64.sh

四、 验证安装版本

执行命令:

cmake --version

出现以下版本信息说明安装成功,可是开始使用了。
在这里插入图片描述

欢迎关注我的公众号【嵌入式技术部落】,交流讨论。

  • 20
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《CMake——入门到精通》是一本介绍CMake的书籍。CMake是一个跨平台的开源构建工具,它可以用于自动化构建、测试和部署应用程序、库和模块。 这本书从CMake的基本概念和用法入手,逐步深入介绍CMake的各种功能和高级用法。首先,书中介绍CMake安装和配置,以及CMake项目的基本结构。然后,书中详细讲解了如何编写CMakeLists.txt文件来描述项目的构建过程,包括如何定义源文件、头文件和链接库,如何设置编译选项和链接选项,以及如何生成不同平台和编译器下的构建配置。 在介绍CMake的基本使用后,书中着重讲解了CMake的高级功能和技巧。比如,如何使用CMake进行跨平台开发,如何进行自定义构建规则,如何配置项目的安装和打包,以及如何对大型项目进行模块化管理等等。同时,书中还提供了大量的示例代码和实用技巧,帮助读者更好地理解和应用CMake。 总的来说,《CMake——入门到精通》是一本系统而全面的CMake教程,适合想要学习和掌握CMake开发人员阅读。无论是初学者还是有一定经验的开发者,都可以从这本书中获取到实用的知识和经验,提高项目构建的效率和质量。无论是在学习中还是在实际工作中,这本书都可以成为CMake的权威参考指南。 ### 回答2: 《cmake——入门到精通.pdf》是一本关于CMake的书籍。CMake是一个跨平台的开源构建工具,用于管理软件项目的构建过程。本书旨在帮助读者从入门到精通掌握CMake的使用。 这本书首先介绍CMake的基本概念和原理,包括如何编写CMakeLists.txt文件以及如何配置和生成项目的构建系统。然后,书中详细介绍CMake的常用功能和命令,包括设置编译选项、指定源文件、添加库和链接库等。此外,本书还深入讲解了CMake的高级用法,如多目录项目管理、条件编译、自定义函数和宏等。 除了基本功能和用法,本书还涵盖了CMake与其他工具和框架的集成,如与Qt、OpenGL和Boost等。读者可以学习如何使用CMake来管理复杂项目和库的构建过程。 《cmake——入门到精通.pdf》也提供了大量的示例和实战项目,帮助读者更好地理解和应用CMake。通过阅读本书,读者将能够全面了解CMake的工作原理和常用技巧,掌握使用CMake构建和管理项目的能力。 总之,借助《cmake——入门到精通.pdf》,读者可以系统地学习和掌握CMake的基本概念和高级用法,并能够灵活应用CMake来管理复杂项目的构建过程。这本书对于软件开发者和项目管理者来说,是一本非常实用和有价值的参考书。 ### 回答3: 《CMake入门到精通.pdf》是一本介绍CMake工具的书籍。CMake是一个跨平台的开源构建工具,可以用于管理和自动化C++项目的构建过程。该书以系统的方式介绍CMake的基本概念、语法和用法。 首先,书中详细解释了CMake的背景和作用。CMake的主要功能是生成与平台无关的构建脚本,在不同的操作系统和编译器上都可以使用。它可以通过简单的配置文件来管理项目的依赖关系和编译选项。 其次,书中介绍CMake的基本语法和常用命令。CMake使用一种类似于脚本的语言来描述项目的构建过程,通过编写CMakeLists.txt文件来配置项目。书中示例详细展示了如何编写CMakeLists.txt文件,包括设置项目名称、指定源文件、添加库和链接库等等。 然后,书中深入讲解了CMake的高级用法和技巧。CMake提供了丰富的功能来处理复杂的项目结构和构建需求,例如条件判断、循环、宏定义等。书中通过实际案例演示了这些高级特性的使用方法,帮助读者更好地理解和运用CMake。 最后,书中还介绍CMake与其他开发工具的集成,如CTest、CPack和CDash等。CTest用于自动化测试,CPack用于生成安装包,CDash用于持续集成。书中展示了如何使用这些工具来进一步提高项目的开发效率和质量。 总之,《CMake入门到精通.pdf》通过全面而系统的方式介绍CMake工具的使用方法,适合初学者和有一定经验的开发者阅读。读者可以通过学习这本书,掌握CMake的基本概念和语法,了解CMake在实际项目中的应用,提高项目的构建效率和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值