一、CMake简介
CMake是一个跨平台编译工具,它能够生成项目的Makefile用于接下来的make编译项目,最终生成可执行文件。CMake使得C++项目的组织和编译大大简化,开发人员不需要了解Makefile如何编写就能够自动生成,从而可以使用make工具对项目进行整体编译,生成可执行文件。
二、CMake使用方法
CMake在Windows与Linux上都有相应的发布版,用户安装CMake后需要配合编译器进行使用,例如Linux平台上是gcc和g++编译器,而Windows平台上是MSVC编译器。CMake有图形化界面以及命令行两种使用方式。
对于图形化界面,如下图所示:
图中source code表示项目源码所在路径,而binaries表示编译结果生成到哪个目录,而图像中红色部分的选项则表示CMake在生成Makefile时可选的选项,通常包括增加编译哪些模块、编译的类型是Release还是Debug等。
对于命令行方式,相比于图形化界面而言相对较难,因为无法一览到所有的CMake编译时候的选项,命令行使用CMake如图所示:
三、Hello CMake!
以上内容对CMake工具进行了简要的概述,下面将通过一个简单的例子来初步使用一下CMake。实验环境为Ubuntu20.04、CMake-3.21.7、Make-4.2.1、gcc-8.4.0、g++-8.4.0。
CMake版本与Make版本并不需要完全和本文统一,gcc与g++对应版本应当一致,比如gcc版本7.5.0,g++版本也应该为7.5.0。
3.1 构建C++项目
构建如图所示项目结构:
build目录用于存放编译结果,CMakeLists.txt用于CMake编译项目,main.cpp为项目的源文件。
3.2 编写cpp源文件
main.cpp内容可以简单编写一个输出“Hello CMake!”字符串的程序,代码如下所示:
#include <iostream>
int main() {
std::cout << "Hello CMake!" << std::endl;
return 0;
}
3.3 编写CMakeLists.txt
CMakeLists.txt内容如下所示:
# 指定编译项目所需CMake的最小版本
cmake_minimum_required(VERSION 3.12)
# 指定项目的名称
project(hello_cmake)
# 设置C++的标准,这里使用C++14
set(CMAKE_CXX_STANDARD 14)
# 添加可执行文件,名称为hello_cmake,源文件为main.cpp,即编译该cpp文件后得到名为hello_cmake的可执行程序
add_executable(hello_cmake main.cpp)
3.4 编译运行
在Ubuntu终端打开项目的目录,依次运行如下命令:
mkdir build
cd build
cmake ..
make
./hello_cmake
命令依次运行完后效果如图所示:
至此,第一个CMake项目已经运行完成,能够运行完成代表大家已经对CMake工具以及C++项目的编译过程有了初步了解,之后我会继续更新有关CMake工具的使用,并搭配C++项目进行实现。