计算机

CMake

基本概念

CMake 是一个跨平台的构建系统,能够生成针对多种编译器和 IDE 的构建脚本。它通常用于处理较大的 C++ 项目,并且与 g++ 配合得很好。

CMake 的示例:

在 Linux 系统下,新建一个工程文件夹 myproject,以此为工程根目录,文件夹下新建一个 CPP 代码文件 main.cpp,填入可以编译的代码,然后新建一个 CMakeLists.txt 文件,写入如下内容:

# 指定最低版本要求
cmake_minimum_required(VERSION 3.10)

# 项目名称
project(MyProject)

# 指定 C++ 标准
set(CMAKE_CXX_STANDARD 17)

# 添加可执行文件
add_executable(myexecutable main.cpp)

随后遵循如下流程构建可执行文件:

新建 build 文件夹并进入:

mkdir build
cd build

使用 cmake 生成 Makefile:

cmake ..

使用 make 编译出可执行文件:

make

此时,根据上面 CMakeLists.txt 的配置,build 文件夹下会生成一个可执行文件 myexecutable,它就是 main.cpp 编译出来的可执行文件。

CMake 与 Make 关系

从以上流程可以看到,编译需要先运行 CMake 再运行 make。CMake 和 Make 是两个不同的工具,它们的关系可以理解为 CMake 生成 Make 可以使用的构建脚本。具体来说:

  • CMake 是一个跨平台的构建系统生成器。它的作用是根据项目的配置文件 CMakeLists.txt 生成构建系统所需的脚本,比如针对 Unix 系统的 Makefile,或者其他编译器和 IDE 支持的项目文件(如 Visual Studio 的 .sln 文件)。
  • Make 是一个构建工具,通常在 Unix 系统上使用。它根据 Makefile 中的规则来执行编译、链接等步骤,最终生成可执行文件。Makefile 包含了编译目标、依赖关系和编译命令。
BEYOND THE ARTICLE

读完了,有什么想法?

阅读已保存的问答示例,并循着引用回到原文。

查看公开问答示例
— 本文完 — 返回文章列表