All You Need for CMake系列01——Hello CMake!

安装CMake

  1. 对于版本的几个tips
    • 据说3.11后速度获得了极大的提升
    • Ubuntu 18.04默认的版本是3.10, 所以如果是Ubuntu 18.04及更低版本的同学请自行安装CMake
  2. 自行安装的过程比较简单,在官网根据OS版本选一个新的下载安装即可
  3. 安装完后cmake -version确认一下版本

一个Hello CMake的例子

准备一个目录,假如是hello-cmake,其文件结构如下:

.
├── CMakeLists.txt
├── main.cpp

main.cpp下面的写如下内容:

#include <iostream>

int main(int argc, char *argv[])
{
   std::cout << "Hello CMake!" << std::endl;
   return 0;
}

CMakeLists.txt下面的内容如下:

# Set the minimum version of CMake that can be used
# To find the cmake version run
# $ cmake --version
cmake_minimum_required(VERSION 3.5)

# Set the project name
project (hello_cmake)

# Add an executable
add_executable(hello_cmake main.cpp)

这个文件里定义了一些规定动作,即:

  • cmake_minimum_required(VERSION xx): 规定了cmake的最低版本,通常如果写了modern cmake语法,至少要写3以上的版本。但也有一些要兼容以前的历史包袱,2.x的版本也很常见。我们全系列教程都按照modern cmake的语法定义,并且所有的开发都会按照这些标准进行。
  • project():声明了项目名,同时会定义${PROJECT_NAME}变量。CMakeLists.txt经常不好读,就是因为很多有经验的作者会大量写一些这种默认的变量名。我们会在之后的教程里继续介绍一些常见的变量名。
  • add_executable():这个函数有两个input变量,第一个是生成的可执行文件的名字,第二个是源代码的路径。如果有多个源代码参与生成,只需要在后面继续写即可。比如add_executable(target main1.cpp main2.cpp src/main3.cpp)
    • 结合${PROJECT_NAME},我们可以把上面这个CMakeLists.txt写成新手看不懂的样子add_executable(${PROJECT_NAME} main.cpp)和原来文件里那句是同样的意思。

编译流程

在CMakeLists.txt的同级目录下:

mkdir build
cd build
cmake ..
make

以上就是标准的流程,最多就是添加一些arguments,这个之后会慢慢介绍。 cmake生成的是配置文件,如果源代码有bug,只要CMakeLists.txt没有修改过,build里的东西就不用删,改了源代码后直接make即可。