《CMake自动化构建工具》 1.第一个CMake工程

💡Yupureki:个人主页
✨个人专栏:《C++》 《算法》《Linux系统编程》《高并发内存池》《MySQL数据库》
《个人在线OJ平台》《Linux网络编程》《CMake自动化构建工具》
🌸Yupureki🌸的简介:

目录
1. 什么是CMake?
1.1 CMake的诞生
场景:
我们要编译我们的程序
在Linux中,我们无需手动敲g++ gcc命令,只需要写好makefile,输入make就能自动编译好程序
同时,我们也可以拓展makefile,实现更多的自动化功能,例如实现make clean自动清理文件
然而当项目很大呢?->数以百计的.cpp源文件和.h头文件分布在不同的文件夹内,我们如果继续使用makefile,就必须一个一个文件夹挨着设计makefile,然后一个一个make,极其麻烦,并且更重要的:无法跨平台
因此,就引入了CMake
CMake 是一个跨平台的开源构建工具,用于管理软件编译过程。它不直接构建项目,而是根据项目配置文件(CMakeLists.txt)生成对应平台的原生构建脚本(如 Unix 的 Makefile、Windows 的 Visual Studio 工程文件、Xcode 工程等),从而实现对不同编译环境和工具链的统一管理。

目前主流的IDE都支持CMake插件,支持CMake语法高亮,代码补全。
1.2 快速安装CMake
CMake官方源代码:Download CMake
CMake官方手册:CMake Reference Documentation — CMake 4.3.1 Documentation
Step 1:Ubuntu安装CMake
apt install cmake
Step 2:验证CMake
cmake --version

不同Linux发行版(如Ubuntu、CentOS、Fedora等)的软件仓库中,预装的CMake版本可能随系统版本更新而变化。系统版本越新,预装的CMake版本通常也越新。
1.3 VSCode安装CMake插件
我们前往VSCode拓展商店安装下面4个插件

2. 快速实现第一个CMake工程
本节我们将使用一个例子来演示下使用CMake构建一个最简单的C++程序,大致了解下CMake的
使用方式。我们创建一个新的hello world工程。
2.1 目录结构

2.2 main.cpp
#include <iostream>
int main()
{
std::cout<<"hello world"<<std::endl;
}
2.3 编写CMakeLists.txt
cmake_minimum_required(VERSION 3.28)
project(helloworld)
add_executable(main main.cpp)
- cmake_minimum_required():设置要求的最低cmake版本,低于该版本会直接报错
- project():设置项目名称
- add_executable():设置要构建的可执行程序
- main表示要构建的目标可执行程序
- main.cpp表示构建的源文件
- 如果有多个源文件,在后面依次添加,以空格分隔即可
为什么需要设置最低的cmake版本?
CMake是一个不断迭代的工具(目前最新4.x,历史有3.x),不同版本可能会引入新的语法、命
令、模块或行为变更。如果项目中使用了高版本CMake才支持的特性(例如特定的函数、生成器表达式、目标属性等),而用户本地安装的cmake版本低于项目要求的版本,就会出现无法解释或者产生不可预知的行为。为了防止以上情况出现:
CMake给我们提供了cmake_minimum_required,这个命令会在配置阶段(cmake命令执行
时)检查当前CMake 版本:
- 若当前版本低于最低要求,CMake会直接终止并报错,明确提示“需要至少X.X版本”避免后续因版本不兼容导致的模糊错误。
- 若当前安装的版本满足要求,则继续执行后续配置流程。
2.4 运行cmake
cmake .
cmake后面跟路径,可以是相对路劲也可以是绝对路径
表示在该路径查找并运行CMakeLists.txt,将生成的文件输出到当前目录内


2.5 编译链接
make
make其实就是执行当前目录下的makefile文件
因此cmake的本质是构建makefile


2.6 运行程序

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)