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作为项目架构系统的。
2. CMake安装
windows系统安装
登录CMake官网(cmake.org/download),下载对应版本的CMake安装器
安装选项中勾选添加CMake到系统环境变量中(也可以选择安装后手动添加) 安装成功后可以直接运行GUI版CMake
由于我们安装过程中添加了环境变量,重启后打开cmd,输入 cmake
,显示相关信息表示安装成功
Linux系统安装
下面内容以Ubuntu系统举例
首先打开终端,卸载已经安装的旧版本CMake(非必需)
接下里我们下载2020年3月2日最新发布的版本
解压
方便管理,我们将解压后的文件夹放在系统的/opt文件夹中
最后创建与bash的软链接,Ubuntu系统下的安装便完成了
我们执行命令测试一下,首先是命令行版的:
GUI版:
Mac系统安装
和Windows版安装一样,首先在官网( cmake.org/download ) 上下载CMake的GUI版本:
安装完打开应用,选择菜单栏中的Tools->How to install Fow Command Line Use
接下来我们打开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】!