cmake 的特点主要有: 1,开放源代码,使⽤类BSD 许可发布。http://cmake.org/HTML/Copyright.html 2,跨平台,并可⽣成native 编译配置⽂件,在Linux/Unix 平台,⽣成 makefile,在苹果平台,可以⽣ 成xcode,在 Windows 平台,可以⽣成 MSVC 的⼯程⽂件。 3,能够管理⼤型项⽬,KDE4 就是最好的证明。 4,简化编译构建过程和编译过程。Cmake 的⼯具链⾮常简单:cmake+make。 5,⾼效虑,按照KDE 官⽅说法,CMake 构建KDE4 的 kdelibs 要⽐使⽤autotools 来构建 KDE3.5.6 的 kdelibs 快40%,主要是因为 Cmake 在⼯具链中没有libtool。 6,可扩展,可以为cmake 编写特定功能的模块,扩充cmake 功能。

1、安装

# 1、卸载老版本的cmake
apt-get autoremove cmake

# 2、文件下载解压
wget https://cmake.org/files/v3.9/cmake-3.9.1-Linux-x86_64.tar.gz
tar zxvf cmake-3.9.1-Linux-x86_64.tar.gz

# 3、创建软链接
mv cmake-3.9.1-Linux-x86_64 /opt/cmake-3.9.1
ln -sf /opt/cmake-3.9.1/bin/* /usr/bin/
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

2、使用CMake生成makefile

2.1、项目结构介绍

当前环境

在这里插入图片描述

创建5个cpp文件分别是加减乘除函数,和main函数,最简单的方式是g++ *.cpp -o app 这种方式进行编译生成可执行程序,现在我们通过cmake来进这个项目进行编译

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.2、编写CMakeLists.txt文件

在项目同级目录下创建CMakeLists.txt文件,通过下面三条命令就可以构建出我们的makefile文件了,为了让我们项目目录干净整洁,我们在当前目录下创建一个build目录,然后进入build目录下,执行cmake ..

# 指定cmake最低版本
cmake_minimum_required(VERSION 3.0)
# 指定项目名字
project(myadd_test)

# 生成项目的执行程序名字,和源文件(多个可以通过空格和;进行区分)
add_executable(app add.cpp;div.cpp;main.cpp;mult.cpp;sub.cpp)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

执行cmake .. 之后在build目录下就生成了Makefile文件了,然后执行make就生成我们的可执行程序了

在这里插入图片描述

2.3、优化写法1

上面的写法要是源文件特别多的情况下就会不美观,诞生出通过set命令给变量SRC_LIST进行初始化,然后add_executable通过${}调用这个变量

# 通过set对变量进行初始化
set(SRC_LIST add.cpp;div.cpp;main.cpp;mult.cpp;sub.cpp)
add_executable(app ${SRC_LIST})
  • 1.
  • 2.
  • 3.

这种写法还是不完善,源文件一旦多起来容易出错,并且也不人性化,通过搜索函数去目录下进行搜索,然后保存到变量中(两个函数都是用来去命令进行遍历)

# 搜索目录下的源文件(.c.cpp),存储到后面一个变量中
# 执行cmake后面跟随的路径PROJECT_SOURCE_DIR
aux_source_directory(${PROJECT_SOURCE_DIR} SRC)

# file命令用来搜索目录下源文件,搜索目录
# CMAKE_CURRENT_SOURCE_DIR CMakeLists.txt的路径
# GLOB遍历当前目录
file(GLOB SRC_C ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

2.4、给可执行程序设置路径

可以通过set对宏进行初始化,进行环境设置&#