CMake与make的区别

CMake 和 Make 都是用于构建和编译项目的工具,但它们的作用和用途不同。以下是它们的区别:

  1. CMake:构建系统生成器
    • 用途:CMake 是一个跨平台的构建系统生成器。它不是直接执行编译,而是生成平台特定的构建系统(如 Makefile 或 Visual Studio 项目文件),然后你可以使用相应的工具(如 make、ninja、MSBuild 等)来实际执行构建。
    • 功能:
    • CMake 用于管理项目的构建过程,生成合适的构建配置文件(例如,Makefile、Ninja 文件或 IDE 项目文件)。
    • 你通常会编写一个 CMakeLists.txt 文件,描述项目的构建规则、依赖关系、编译选项等。
    • 它支持跨平台的构建,能够生成适用于不同操作系统和工具链的构建文件。比如,你可以在 Linux 上生成 Makefile,在 Windows 上生成 Visual Studio 项目文件。
    • 如何工作:
    • 你运行 cmake 命令,指定项目的源代码目录,CMake 会根据平台和工具链生成适当的构建系统文件。
    • 例如,生成 Makefile:cmake . 或 cmake /path/to/project。
    • 示例:

运行 CMake 来生成 Makefile

cmake .

使用生成的 Makefile 进行编译

make

  1. Make:构建工具
    • 用途:make 是一个自动化构建工具,用于根据 Makefile 中的规则自动化编译过程。Make 根据源代码文件的修改时间来决定哪些文件需要重新编译,并执行相应的命令。
    • 功能:
    • make 依赖于 Makefile 来定义构建规则。Makefile 规定了如何将源文件转换为目标文件,并管理依赖关系。
    • 你可以在 Makefile 中定义目标(如编译的可执行文件、库文件等),并为每个目标指定构建步骤(例如,使用 gcc 来编译源文件)。
    • 如何工作:
    • 你运行 make 命令,它会根据 Makefile 中定义的规则来执行构建命令,检查哪些文件需要更新,并执行相应的操作。
    • 示例:

直接使用 make 命令来编译项目

make

  1. CMake 与 Make 的关系:
    • CMake 生成 Makefile(或其他构建系统的配置文件),然后你使用 Make 来根据生成的 Makefile 进行实际的构建。
    • CMake 是构建过程的配置工具,而 Make 是一个实际的构建工具,负责根据 Makefile 执行编译和链接。

  2. 区别总结:

特性 CMake Make
功能 构建系统生成器,生成构建配置文件 自动化构建工具,使用 Makefile 执行构建
输入 CMakeLists.txt(项目配置文件) Makefile(构建规则文件)
用途 生成平台特定的构建系统(如 Makefile) 根据 Makefile 执行编译和链接
跨平台 支持跨平台,生成不同平台的构建文件 主要用于类 Unix 系统,但也支持 Windows
依赖管理 管理复杂的跨平台依赖关系和构建步骤 基于 Makefile 需要手动管理依赖
常用命令 cmake make

  1. 结合使用的典型流程:

通常,CMake 和 Make 是配合使用的。在项目中,你通常首先用 CMake 来生成 Makefile,然后再使用 make 来进行实际的编译过程。具体步骤如下:
1. 生成 Makefile:

cmake .

2.	使用 Make 进行构建:

make

这就是 CMake 和 Make 的基本区别和如何配合使用的方式。CMake 更侧重于项目的跨平台配置,而 Make 是一个实际的构建工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值