本文只记录一些基础及常用的cmake操作,不涉及复杂场景的使用。
(一)所需环境
电脑安装cmake, vscode安装cmake插件, 电脑安装mingw64
(二)C++编译流程
对于一个main.cpp文件而言,编译会经过下面4个步骤:
(1)预处理(得到main.i文件):C++中预处理指令以 #
开头。在预处理阶段,会对#define
进行宏展开,处理#if,#else
等条件编译指令,递归处理#include
g++ -E main.cpp -o main.i
(2)编译(得到main.s文件):检查代码的规范性和语法错误等,检查完毕后把代码翻译成汇编语言文件。
g++ -S main.i -o main.s
(3)汇编(得到main.o文件):基于汇编语言文件生成二进制格式的目标文件
g++ -c main.s -o main.o
(4)链接(得到main.exe文件):将目标代码与所依赖的库文件进行关联或者组装,合成一个可执行文件
g++ main.o -o main
得到main.exe文件之后就可以直接在终端运行这个可执行文件了。
(三)Cmake简介
- 自动搜索可能需要的程序、库和头文件的能力;
- 独立的构建目录(如
build
),可以安全清理 - 支持复杂的自定义命令(下载、生成各种文件)
- 自定义配置可选组件
- 从简单的文本文件(
CMakeLists.txt
)自动生成工作区和项目的能力 - 在主流平台上自动生成文件依赖项并支持并行构建
- 几乎支持所有的ID
(四)Cmake编译流程
(1)使用Cmake需要给他配置一个CMakeLists.txt文件
# CMake 最低版本号要求
cmake_minimum_required(VERSION 3.10)
# first_cmake是项目名称,VERSION是版本号,DESCRIPTION是项目描述,LANGUAGES是项目语言
project(first_cmake)
# 添加一个可执行程序,first_cmake是可执行程序名称,main.cpp是源文件
add_executable(first_cmake main.cpp)
(2) 执行编译:打开终端
执行下面的命令会生成一个名称为build的文件夹
cmake -S . -B build
再执行下面的命令,编译就完成了
cmake --build build
编译完成后,在build/Debug下会生成一个可执行文件,然后在终端运行这个可执行文件就可以输出main.cpp的输出结果了。