All You Need for CMake系列01——Hello CMake!
安装CMake
- 对于版本的几个tips
- 据说3.11后速度获得了极大的提升
- Ubuntu 18.04默认的版本是3.10, 所以如果是Ubuntu 18.04及更低版本的同学请自行安装CMake
- 自行安装的过程比较简单,在官网根据OS版本选一个新的下载安装即可
- 安装完后
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即可。