【CMake】一、CMake 介绍

1. CMake 介绍

CMake 是一个开源、跨平台的构建系统,主要用于软件的构建、测试和打包。
CMake 使用平台无关的配置文件 CMakeLists.txt 来控制软件的编译过程,并生成适用于不同编译器环境的项目文件。例如,它可以生成 Unix 系统的 Makefile、Windows 下的 Visual Studio 项目文件或 Mac 的 Xcode 工程文件,从而简化了跨平台和交叉编译的工作流程。CMake 并不直接构建软件,而是产生标准的构建文件,然后使用这些文件在各自的构建环境中构建软件。

CMake 有以下几个特点:

  • 开放源代码:使⽤类 BSD 许可发布
  • 跨平台:并可生成编译配置⽂件,在 Linux/Unix 平台,生成 makefile;在苹果平台,可以生成 xcode;在 Windows平台,可以生成 MSVC 的工程文件
  • 能够管理大型项目:KDE4 就是最好的证明
  • 简化编译构建过程和编译过程:Cmake 的⼯具链非常简单:cmake+make
  • 高效率:按照 KDE 官⽅说法,CMake 构建 KDE4 的 kdelibs 要比使用autotools 来构建 KDE3.5.6 的
    kdelibs 快 40%,主要是因为 Cmake 在⼯具链中没有 libtool
  • 可扩展:可以为 cmake 编写特定功能的模块,扩充 cmake 功能

2. CMake 安装

• Ubuntu 22.04 安装 cmake

sudo apt update
sudo apt install cmake

确定 cmake 是否安装成功

cmake --version

查看 cmake 版本,至此,cmake 安装成功。
在这里插入图片描述

3. 入门样例 - Hello-world 工程

创建 hello-world 目录, 并在其目录下创建 main.cpp 源文件和 CMakeLists.txt 文件
在这里插入图片描述
在这里插入图片描述
main.cpp 源文件只是做一个简单的 hello world 打印

#include <iostream>
using namespace std;
int main()
{ 
 std::cout << "hello world" << std::endl;
 return 0;
}

CMakeLists.txt 文件如下

cmake_minimum_required(VERSION 3.0)
project(HELLO)
add_executable(hello main.cpp)

此时我们可以使用 cmake 来构建这个工程, 生成 makefile, 从而编译代码。

# cmake 生成 makefile
root@iZ0jlbsky11kph2fx8q9o7Z:~/hello-world# cmake .
-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /root/hello-world

# 使用 makefile 编译代码
root@iZ0jlbsky11kph2fx8q9o7Z:~/hello-world# make
[ 50%] Building CXX object CMakeFiles/hello.dir/main.cpp.o
[100%] Linking CXX executable hello
[100%] Built target hello

# 运行可执行文件
root@iZ0jlbsky11kph2fx8q9o7Z:~/hello-world# ./hello 
hello world

我们来看一下 CMakeLists.txt 文件, 这个文件是 cmake 的构建定义文件, 其文件名是大小写相关的。
下面依次介绍一下在该文件中添加的三个指令:

  • cmake_minimum_required:指定使用的 cmake 的最低版本。可选,如果不加会有警告

  • project:定义工程名称, 并可指定工程的版本、工程描述、web 主页地址、支持的语言(默认情况支持所有语言),如果不需要这些都是可以忽略的,只需要指定出工程名字即可。

project(<PROJECT-NAME> [<language-name>...])
project(<PROJECT-NAME>
 [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
 [DESCRIPTION <project-description-string>]
 [HOMEPAGE_URL <url-string>]
 [LANGUAGES <language-name>...])
  • add_executable:定义工程会生成一个可执行程序
add_executable(可执行程序名 源文件名)

注意:这里的可执行程序名和 project 中的项目名没有任何关系
源文件名可以是一个也可以是多个,如有多个可用空格或;间隔

# 样式 1 
add_executable(app test1.c test2.c test3.c)
# 样式 2 
add_executable(app test1.c;test2.c;test3.c)
  • cmake 命令:将 CMakeLists.txt 文件编辑好之后,就可以执行 cmake 命令了
# cmake 命令原型
cmake CMakeLists.txt 文件所在路径

当执行 cmake 命令之后,CMakeLists.txt 中的命令就会被执行,所以一定要注意给cmake 命令指定路径的时候一定不能出错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一岁就可帅-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值