CMake基础(1)初识CMake

简介: CMake基础(1)初识CMake

0x01 介绍

CMake是一个跨平台的自动构建系统,它使用一个简单的语言来描述项目的构建过程,并且能够输出各种各样的构建系统的文件,如Makefiles和Microsoft Visual Studio项目文件。它的目标是简化项目的构建过程,让开发人员能够在多个平台上更方便地构建和管理项目

概念: CMakeLists.txt

CMakeLists.txt是CMake项目的构建脚本。它包含了项目的构建规则、依赖关系和其他信息,CMake使用它来生成项目的构建文件。通常,CMakeLists.txt文件位于项目的根目录,并且使用CMake命令来指定项目的各种设置。例如,您可以使用cmake_minimum_required命令来指定项目所需的最低CMake版本,或者使用project命令来指定项目的名称和类型。

CMakeLists.txt 是存储所有 CMake 命令的文件。当 cmake 在文件夹中运行时,它将查找此文件,如果不存在,cmake 将因错误退出。

概念: 最小 CMake 版本

使用 CMake 创建项目时,可以指定支持的最低版本的 CMake。

cmake_minimum_required(VERSION 3.1)

查询当前安装的cmake版本 cmake --version

安装: Cmake编译环境

当前环境是wls2

ln28@DESKTOP-FS9U3GT:/mnt/d/Project/Cmake_examples/cmake_basics_01/build$ uname -a

Linux DESKTOP-FS9U3GT 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

# 更新

sudo apt update

# 安装cmake

sudo apt cmake

#

0x02 示例

创建可执行文件

CMake来创建一个"Hello World"程序,那么需要准备两个文件:一个是源文件,包含程序的实际代码;另一个是CMakeLists.txt文件,包含构建脚本。首先,来创建一个名为hello_world.cpp的源文件,并在其中输入如下代码:

#include <iostream>
int main()
{
std::cout << "Hello Cmake!" << std::endl;
return 0;
}

这段代码实现了一个简单的"Hello World"程序,它会在控制台输出一行"Hello Cmake"字符串。需要创建一个CMakeLists.txt文件,并在其中输入如下代码:

cmake_minimum_required(VERSION 3.1) #这里要改成3.1,因为系统安装的cmake是3.16.3

project(hello_world)

add_executable(hello_world hello_world.cpp)

这个CMakeLists.txt文件包含了三条CMake命令:

  • cmake_minimum_required:指定项目所需的最低CMake版本。
  • project:指定项目的名称。
  • add_executable:创建一个可执行文件,并指定要编译进可执行文件中的源文件。

现在,您已经准备好了源文件和CMakeLists.txt文件,就可以通过CMake来构建这个项目了。首先,运行如下命令来创建一个构建目录:

mkdir build

cd build

您需要运行如下命令来生成构建文件:

cmake ..

# 解决办法

sudo apt-get update

sudo apt-get install -y build-essential

这条命令会读取上一级目录中的CMakeLists.txt文件,并根据其内容生成构建文件。具体而言,CMake会根据您指定的源文件和相关选项,生成一个用于编译项目的Makefile文件。在生成构建文件之后,您就可以运行如下命令来编译项目了:

make

这条命令会调用Makefile文件中的编译规则,对源文件进行编译,并生成可执行文件。如果编译成功,那么您会在当前目录下看到一个名为hello_world的可执行文件。最后,您可以运行如下命令来运行可执行文件:

./hello_world

就地构建

就地构建将会在与源代码相同的目录结构中生成所有临时文件。这意味着所有的 Makefile 和目标文件都散布在的普通代码中。要创建就地构建目标,请在根目录中运行 cmake 命令。

例如:

源外构建

使用源外构建,可以创建单个生成文件夹,该文件夹可以位于文件系统的任何位置。所有临时构建的目标文件都位于此目录中,以保持源码目录结构的整洁。要进行源外构建,请运行 build 文件夹中的 cmake 命令,并将其指向根 CMakeLists.txt 文件所在的目录。使用源外构建时,如果想从头开始重新创建 cmake 环境,只需删除构建目录,然后重新运行 cmake。

例如:

在本教程的所有例子中,都将使用源外构建。


相关文章
|
自然语言处理
CMake基础(3)静态库
CMake基础(3)静态库
225 1
|
监控 JavaScript 前端开发
|
IDE Unix 测试技术
CMake基础(10)使用ninja构建
CMake基础(10)使用ninja构建
2120 1
|
Docker 容器
Docker部署minio-arm64版本,阿里官方推荐
Docker部署minio-arm64版本,阿里官方推荐
|
IDE 开发工具 C++
CMake中文手册_target_sources(3.26)
CMake中文手册_target_sources(3.26)
1012 0
|
SQL 数据挖掘 API
ibis:极具潜力的Python数据分析新框架
ibis:极具潜力的Python数据分析新框架
302 6
|
编译器 C语言 C++
CMake基础(7)编译标志
CMake基础(7)编译标志
921 0
|
编译器 C语言 C++
CMake基础(9)使用Clang编译
CMake基础(9)使用Clang编译
1275 0
|
Linux Shell
Linux命令行快捷键和技巧
Linux命令行快捷键和技巧
257 0
|
算法 数据库 异构计算
Milvus 2.3.功能全面升级,核心组件再升级,超低延迟、高准确度、MMap一触开启数据处理量翻倍、支持GPU使用!
Milvus 2.3.功能全面升级,核心组件再升级,超低延迟、高准确度、MMap一触开启数据处理量翻倍、支持GPU使用!
Milvus 2.3.功能全面升级,核心组件再升级,超低延迟、高准确度、MMap一触开启数据处理量翻倍、支持GPU使用!