2. Makefile之目标、依赖(附示例)

一、本节概要

本专栏所有内容围绕Makefile官方文档进行刨析,给出详细具体示例做辅助理解手撕Makefile官方手册
在这里插入图片描述

二、Makefile中的目标和依赖

在一个简单的Makefile中,每条规则通常由以下几个部分组成:

target ... : prerequisites ...
    recipe
    ...
    ...
  • 目标(target)通常是由程序生成的文件的名称,例如可执行文件或目标文件。目标也可以是要执行的操作的名称,比如 ‘clean’。
  • 先决条件(prerequisites)是用于创建目标的输入文件。目标通常依赖于多个文件,这些文件被视为先决条件。

在规则的最后,可以包含一个或多个命令行指令(recipe),用于生成目标文件。这些指令可以是任何Shell命令,用于描述如何从先决条件生成目标文件。

因此,Makefile中的规则描述了目标文件如何依赖于先决条件,并提供了生成目标文件的步骤(recipe)。当某个目标的先决条件发生变化时,Make工具会根据规则中定义的步骤重新生成该目标文件。

三、辅助理解示例

以下是一个简单的示例Makefile:

# 目标: main
# 先决条件: main.c utils.c
# 生成可执行文件 main
main: main.o utils.o
    gcc -o main main.o utils.o

# 目标: main.o
# 先决条件: main.c
# 生成目标文件 main.o
main.o: main.c
    gcc -c -o main.o main.c

# 目标: utils.o
# 先决条件: utils.c
# 生成目标文件 utils.o
utils.o: utils.c
    gcc -c -o utils.o utils.c

# 清理生成的目标文件和可执行文件
clean:
    rm -f main main.o utils.o

在这个示例中,有三个规则。第一个规则定义了目标为main,它的先决条件为main.outils.o。生成目标的步骤是通过gcc编译器将main.outils.o链接为可执行文件main

第二个规则定义了目标为main.o,它的先决条件是main.c。生成目标的步骤是通过gcc编译器将main.c编译为目标文件main.o

第三个规则定义了目标为utils.o,它的先决条件是utils.c。生成目标的步骤是通过gcc编译器将utils.c编译为目标文件utils.o

最后,还定义了一个名为clean的伪目标,用于删除生成的目标文件和可执行文件。通过执行make clean命令,可以调用rm命令删除mainmain.outils.o

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MrWang.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值