makefile工程管理

本文深入探讨了Makefile在程序构建中的作用,解释了规则、伪目标、最终目标及make命令的使用方法,并介绍了变量的运用和makefile的技巧。通过实例展示了如何通过make命令执行特定规则,实现高效构建流程。

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

make的工作主要依赖于makefile文件。makefile文件描述了整个程序的编译、链接等规则。
makefile中最重要的组成是规则
规则:用于说明如何生成目标文件,规则的格式。如:
目标:依赖
命令
其中命令前的空白是一个Tab键。

伪目标
伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行其所在规则定义的命令,有时也可以将一个伪目标称为标签。用“.PHONY”声明。如:
.PHONY:clean
clean:
rm -f hello main.o func.o

最终目标
单独执行某一条规则:make 目标
比如对于规则
led.o:led.S
arm-linux-gcc -g -o led.o -c led.S
可通过运行make led.o 单独执行该规则。
若运行make ,则执行makefile中第一条规则,且这条规则中的目标称之为最终目标。

makefile中变量
在makefile中,变量就是一个名字(类似与C语言中的宏),代表一个文本字符串。
在makefile的目标,依赖,命令中引用一个变量的地方,变量会被它的值取代。
使用变量前:
app1:app1.o func1.o func2.o
gcc app1.o func1.o func2.o -o app1
使用变量后
obj=func1.o func2.o
app1:app1.o $(obj)
gcc app1.o $(obj) -o app1
系统存在定义好的默认变量
$^  :代表所有的依赖文件
$@  :代表目标
$<  :代表第一个依赖文件
使用前:
led.o:led.S
arm-linux-gcc -g -o led.o -c led.S
使用后:
led.o:led.S
arm-linux-gcc -g -o $@ -c $^

makefile使用技巧
回显:makefile在执行某条规则时,默认会显示所执行规则的命令,这称为回显。
去回显:在命令前加@,比如:
hello:hello.c
@gcc hello.c -o hello
makefile中“#”字符后内容为注释

makefile命令默认在当前目录下寻找名称为Makefile或makefile的工程文件,当名称不为这两者之一时,可使用如下方法指定:make -f 文件名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值