初识makefile的结构

回顾一下上篇文章的内容,makefile的意义:
1. makefile用于定义源文件之间的依赖关系;
2. makefile说明如何编译各个源文件并生成可执行文件。

1、依赖的定义

targets : prerequisites ; command1
    command2

语法:
(1)分号是将依赖和命令隔开;
(2)冒号是将目标和依赖隔开;
(3)命令可以写在下一行,这时就不要分号。注意command2前面是Tab键,不是空格键。

各个元素的含义:

元素含义
targets通常是需要生成的目标文件名;make所需执行的命令名称;可以包含多个目标,使用空格对多个目标名进行分隔
prerequisites当前目标所依赖的其他目标或文件;可以包含多个依赖,使用空格对多个依赖进行分隔
command完成目标所需要执行的命令

规格中的注意事项:

  • Tab键
    (1)每个命令行必须以Tab字符开始
    (2)Tab字符告诉make此行是一个命令行
  • 续行符:\
    (1)可以将内容分开写到下一行,提高可读性

2、依赖示例

all : test
    @echo "make all"
test : 
    @echo "make test"

依赖规则

(1)当目标对应的文件不存在,执行对应命令;
(2)当依赖在时间上比目标新,执行对应命令;
(3)当依赖关系连续发生时,对比依赖链上的每一个目标。

小技巧

工程开发中可以将最终可执行文件名all同时作为makefile中的第一条规则的目标

hello.out all : main.o func.o
    gcc -o hello.out main.o func.o

Conclusion:

  • makefile用于定义源文件间的依赖关系;
  • makefile说明如何编译各个源文件并生成可执行文件;
  • makefile中的目标之间存在连续依赖关系;
  • 依赖存在并且命令执行成功是目标完成的充要条件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值