N0.1 make和makefile的一些基础知识

本文详细介绍了make和makefile的概念及应用,make是一款自动化编译工具,而makefile则是定义编译规则的文件。文中还深入讲解了依赖规则、伪目标的使用方法,以及makefile的高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文参照自狄泰软件学院:《门徒计划》课程

make和makefile的区别:

make是一个应用程序,用来解释程序之间的依赖关系,并根据依赖关系自动维护编译工作,执行宿主操作系统中的各种命令

makefile是一个描述文件,定义了一系列的规则来指定源文件编译的先后顺序,拥有特定的语法规则,支持函数定义合函数调用,能够直接集成操作系统的各种命令。

两者的关系是makefile中描述用于指导make程序如何完成工作,make根据根据马克file中的规则执行命令,最后完成编译输出


最简单的makefile示例

hello:
    echo "hello makefile"

hello为目标,下面一行是实现目标所需执行的命令

要注意的是目标后的命令需要用Tab键('\t')隔开而不是四个空格

依赖的定义:

targets :通常是需要生成的文件目标名,make所需要执行的命令名称

prerequisities:当前目标所需要的依赖的其它目标或文件

command:完成目标所需要执行的命令

目标、依赖、命令都可以有多个,目标和依赖需要由空格隔开,但是每条命令必须以[Tab]字符开始

要知道续行符 :\  可以将内容分开写到下一行,提高可读性


依赖规则:

当目标对应的文件不存在,执行对应命令,当依赖在时间上比目标更新,执行对应命令,当依赖关系连续发生时,对应依赖立链上的每一个目标



伪目标的引入:默认情况下,make认为目标对应着一个文件,make比较目标文件和依赖文件的新旧关系,决定是否执行命令,make以文件处理作为第一优先级(如果目标和当前文件夹有同名的文件,make会认为是文件ps:两者没有关系,这样会导致不能够执行命令,所以引入伪目标)

makefile中的伪目标,通过.PHONY关键字声明伪目标,伪目标不对应任何的实际文件,而且不管伪目标的依赖是否更新,命令总是执行

伪目标的语法:先声明,后使用 本质:伪目标是make中特殊的目标.PHONY的依赖


伪目标的妙用:规则调用(函数调用)

.PHONY : clean rebuild all

## other rules ##

rebuild : clean all
clean :
    rm *.o hello.out
原理:当一个目标的依赖包含伪目标时,伪目标所定义的命令总会执行


注意:.PHONY是标准make才有的关键字(ps:其他的非标准的make可能没有),可以使用这样的技巧来代替.PHONY


原理是:如果一个规则没有命令或者依赖,并且它的目标不是一个存在的文件名;在执行此规则时,目标总会被认为是最新的



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值