cmake install_CMake学习笔记(一)

CMake作为一个开源的跨平台编译工具,由于其不依赖于特定编译器的特性,对于我们跨平台编译程序有着十分大的帮助,作为本系列的第一篇,介绍CMake是什么,CMake的安装,以及CMake语句的主体框架。

本篇包含内容:

  • 什么是CMake

  • CMake安装

  • CMake主体框架

1. 什么是CMake?

      可能大家平时有用过或者听说过其它的一些make工具,例如GNU Make, QT的qMake, 微软的MS nmake, BSD Make等等 。这些Make工具遵循着各自的规范和标准,但都有着同样的一个问题:如果软件想要跨平台编译的话,便要每一种标准写一次Makefile,这会带来非常大的麻烦。

     “CMake”是“Cross platform make”的缩写,它是一个针对上述问题所开发的开源跨平台的编译工具,它允许开发者编写一种与平台无关的CMakeList.txt文件来定制整个编译流程,再根据目标用户的平台进一步生成所需的本地化Make -file和工程文件。例如我们最常用的开源项目之一OpenCV,ROS中的catkin, ament, colcon就是使用CMake作为项目架构系统的。

06455cfe2069db4c6c3e91cf8d8f48db.png

2. CMake安装

  • windows系统安装

登录CMake官网(cmake.org/download),下载对应版本的CMake安装器

0ce95339bc42c1898308d6c9b1f6ac55.png

安装选项中勾选添加CMake到系统环境变量中(也可以选择安装后手动添加) 安装成功后可以直接运行GUI版CMake

e4b726a79b75a6da4af1ca9dbe6f4615.png

由于我们安装过程中添加了环境变量,重启后打开cmd,输入 cmake,显示相关信息表示安装成功

a2adff825cce0f07e4a425da4e71a87f.png

  • Linux系统安装

下面内容以Ubuntu系统举例 

首先打开终端,卸载已经安装的旧版本CMake(非必需)

f5bd47c34af0f2317d722e628a9b39ff.png

接下里我们下载2020年3月2日最新发布的版本

216f56d59a3d89640bf6d5f00dfca609.png

 解压 

0904f4f3f36b857899f6f67fe66ca712.png

方便管理,我们将解压后的文件夹放在系统的/opt文件夹中 

9c8adc2945fc546e9b1e2721975cb341.png

最后创建与bash的软链接,Ubuntu系统下的安装便完成了 

393f69257aeb76b82ce6cd2b6d92aac1.png

我们执行命令测试一下,首先是命令行版的:

d3d1d18596b97cd6ebaec4557cfea433.png

GUI版:

e0d709670bbc935e8894c66723711201.png

  • Mac系统安装

和Windows版安装一样,首先在官网( cmake.org/download ) 上下载CMake的GUI版本:

3b773d3fbd274b905a9fc95e6d51f5f4.png

安装完打开应用,选择菜单栏中的Tools->How to install Fow Command Line Use 

ad05993bba33659edb483645f5c770d7.png

 接下来我们打开Mac的终端,根据需求配置命令行版的CMake:

1)临时使用(关闭命令行窗口即失效):

PATH="/Applications/CMake.app/Contents/bin":"$PATH"

2)关闭命令行后不失效:

sudo "/Applications/CMake.app/Contents/bin/cmake-gui"--install

配置完后查看是否安装成功:

cmake --version

3. CMake的主体框架

当我们构建一个CMake框架(编写CMakeLists.txt文件)时,我们很自然的会想到以下几个问题:

  • 最终的输出目标是什么:可执行程序,动态库,静态库

  • 输出目标文件所需的文件及环境是什么:编译参数,环境,源文件

  • 输出目标文件是通过怎样的逻辑链接起来的:内外依赖的pkg和lib,如何链接外部库 我们根据上面这个思路,就得到了CMake的Makelist设计的整体框架,接下来的就是通过具体的CMake的指令来逐步填补了。

下一期将建立一个CMake的Helloworld工程来讲解CMake的各种指令。

精彩内容回顾:

深度强化学习简介

JavaEE留言板项目后端开发

机器视觉基础(二):相机和镜头选型

十大经典排序算法的分析与实现

关于CVNewbie

我们是一群哈工大,上海交大,华科大,航天八院和国防科大的硕博共同运营的公众号,我们乐于总结知识,与大家共同进步,欢迎关注我们的公众号【CVNewbie】!

086b894ac28c1a55829b1a23343d4cee.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值