cmake和makefile区别

        cmakeMakefile 都是用于自动化编译和构建软件的工具,但它们的用途和工作方式有所不同。

CMake

CMake 是一个跨平台的自动化构建系统,它使用配置文件(通常称为 CMakeLists.txt),这些文件包含了构建项目所需的信息。CMake 能够生成标准的 Makefile 或其他构建系统所需的文件,以便在不同平台上编译和构建项目。

特点:
  1. 跨平台:CMake 支持多种操作系统,如 Windows、Linux 和 macOS。
  2. 生成器:CMake 可以使用不同的生成器来创建 Makefile,例如 Unix Makefiles、Ninja、Visual Studio 解决方案等。
  3. 可定制:通过 CMakeLists.txt 文件,用户可以详细定义构建过程,包括源文件、库、编译器选项等。
  4. 易于使用:CMake 的语法相对简单,易于学习和使用。
工作流程:
  1. 编写 CMakeLists.txt 文件,指定构建过程。
  2. 在项目目录中运行 cmake 命令,生成 Makefile 或其他构建系统文件。
  3. 使用生成的 Makefile 或构建系统编译和构建项目。

Makefile

Makefile 是一个包含了一系列指令的文本文件,用于指导 make 工具如何编译和链接程序。Makefile 定义了项目的构建规则,包括哪些文件需要编译,以及编译的顺序。

特点:
  1. 简单:Makefile 的语法相对简单,易于编写和理解。
  2. 灵活性:Makefile 允许用户自定义构建规则和依赖关系。
  3. 依赖性管理:Makefile 可以自动处理文件依赖性,只重新编译那些自上次构建以来已经更改的文件。
工作流程:
  1. 编写 Makefile,定义构建规则和依赖关系。
  2. 在项目目录中运行 make 命令,make 工具根据 Makefile 执行构建过程。
  3. make 工具根据规则和依赖关系编译和链接程序。

区别

  • 平台依赖性:Makefile 通常是平台特定的,而 CMake 是跨平台的
  • 复杂性CMake 通常用于大型项目,可以处理更复杂的构建过程,而 Makefile 更适合小型到中型项目。
  • 可读性CMakeLists.txt 文件通常更易于理解和维护,尤其是对于大型项目。
  • 工具链CMake 可以更容易地集成不同的工具链和编译器,而 Makefile 可能需要手动配置。

在实际使用中,选择 CMake 还是 Makefile 取决于项目的需求、团队的习惯以及开发环境。许多大型项目和跨平台项目倾向于使用 CMake,因为它提供了更好的可移植性和可定制性。而对于一些简单的项目或者特定平台的项目,Makefile 可能是一个更直接的选择。

cmake示例

创建一个简单的 CMake 项目通常涉及以下步骤:

  1. 创建项目目录结构: 通常,你会为你的项目创建一个目录,其中包含源代码文件、CMake 配置文件(CMakeLists.txt)以及其他资源。

  2. 编写 CMakeLists.txt: 这是 CMake 配置文件,它告诉 CMake 如何构建你的项目。

  3. 编写源代码: 创建你的源代码文件。

  4. 生成构建系统: 使用 CMake 生成适用于你系统的构建系统(如 Makefile 或 Visual Studio 解决方案)。

  5. 构建项目: 使用生成的构建系统构建你的项目。

以下是一个简单的 CMake 项目示例:

项目目录结构

/my_project
    /src
        main.cpp
    CMakeLists.txt

1. 编写 CMakeLists.txt

在项目根目录下创建 CMakeLists.txt 文件,并添加以下内容:

cmake

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

# 设置项目名称和版本
project(MyProject VERSION 1.0)

# 指定 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# 找到项目源代码
add_executable(MyProject src/main.cpp)

2. 编写源代码

src/main.cpp 文件中,添加以下内容:

cpp

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

3. 生成构建系统

打开命令行或终端,导航到项目目录,并运行以下命令:

bash复制

mkdir build
cd build
cmake ..

这将创建一个名为 build 的目录,并在其中生成适用于你系统的构建系统。

4. 构建项目

build 目录中,运行以下命令来构建项目:

bash

cmake --build .

或者,如果你使用的是 Unix Makefiles 生成器,可以直接使用 make

bash

make

5. 运行程序

构建完成后,你可以在 build 目录中找到可执行文件,并运行它:

bash

./MyProject

这将输出:

Hello, World!

        这个简单的示例展示了如何使用 CMake 来构建一个基本的 C++ 项目。

        在实际项目中,你的 CMakeLists.txt 可能会包含更多的指令,例如添加库、设置编译器选项、定义宏等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值