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。

例如:

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


相关文章
|
6月前
|
IDE Java Linux
【CMake】CMake构建C++代码(一)
【CMake】CMake构建C++代码(一)
|
1月前
|
编译器 测试技术 开发者
Cmake的使用
CMake的安装和使用,通过一个简单的项目示例,展示了如何编写CMakeLists.txt文件和main.cpp程序,以及如何通过CMake生成构建文件并编译项目。
45 0
|
11月前
|
并行计算 编译器 Linux
CMake基础
CMake基础
CMake中使用vcpkg
vcpkg是一个微软开源的C++包管理器。 在以前的开发中,如果在项目中需要使用某个开源库,例如qt,我们需要取官网下载qt的源码,然后构建得到对应的库,然后在项目中链接这个库。对于自己熟悉的库还好说,若是不熟悉的库,如何拉取源码?如何构建?如何在项目中引用?等等这些问题通常会困扰我们,然而,大多数情况下,我们只是使用这个开源库,并不需要关心这个库的构建和编译等问题。如此,在以前的开发过程中,往往会花费不少的时间在引入开源库上。 vcpkg是在背景下开发出来的,通过vcpkg,我们可以在项目中很方便的引入开源库,不用再关心拉取代码、构建开源库的这些事情。 CMake构建的项目中引入开源库
191 0
|
Linux 异构计算
|
IDE 编译器 开发工具
CMake教程1:CMake是什么?
CMake教程1:CMake是什么?
144 0
|
C++
CMake教程6:CMake的一些实用小技巧
CMake教程6:CMake的一些实用小技巧
235 0
|
Ubuntu
CMake
CMake
149 0
|
消息中间件 关系型数据库 C语言