【Linux】Make/Makefile

本文介绍了make/makefile在项目自动化构建中的作用,详细阐述了makefile的编写原理,包括依赖关系的解析和目标文件的生成过程。通过实例展示了如何利用.PHONY伪目标实现总是需要执行的任务,如清理操作。此外,还探讨了如何简化多个可执行程序的生成,提升开发效率。

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

目录

一.介绍

二.使用与原理

三.目标与伪目标

四.一些扩展


一.介绍

项目自动化构建工具 --- make/makefile

make是一条命令

makefile是一个文件

两者搭配使用,完成自动化构建

makefile带来的好处就是自动化编译,只需要一个make命令,整个工程自动编译,提高开发效率

二.使用与原理

注意一点依赖方法前一定是一个tab,否则报错。

当写好makefile文件后,就可以直接使用make命令了。

1.在使用make命令后,make会在当前目录下寻找名为GNUmakefile/makefile/Makefile的文件。

2.会默认在文件中执行自上至下数的第一个目标,会把这个mytest这个文件作为最终目标文件

3.如果文件不存在,会依赖后面的test.o,通过执行依赖方法,来生成目标文件。

4.如果test.o不存在,make会在当前文件找目标为test.o的依赖文件,然后生成test.o,再生成mytest

5.make会一层一层去寻找目标所对应的依赖关系,直到生成出最开始的第一个目标文件

6.如果中途出现错误,最后被依赖的文件找不到,直接退出并且报错,make只管文件的依赖性

以上为make指令输入之后的一系列执行原理

stat [文件名] -- 可以查看这个文件的修改时间

在modify也就是修改文件内容时间不发生变化时,make不可重复使用,一但文件有了内容上的修改,即可再次使用make,也就是第一个依赖文件要比第一个目标文件新

三.目标与伪目标

.PHONY关键字后面跟的就是伪目标

伪目标的作用有两个:

1.总是被执行的,也就是使目标对象无论如何都要被重新生成

2.并不生成目标文件,只是为了执行一些指令

make默认执行第一个目标文件,所以我们一般把目标写在最开始,伪目标写在后面,那么如何执行伪目标呢?

make [伪目标名]

例如:项目清理 --- 也就是删除生成的可执行程序

使用指令:make clean

同时,我们也是可以给第一个mytest目标设置成伪目标的,使其成为总是被执行的。

四.一些扩展

如果文件过多,我们是不是还要挨个输入gcc test1.c test2.c test3.c... -o mytest呢?尽管用了makefile,我们发现在写依赖方法的时候,还是要将这些文件名全部写一遍,有没有简介方法呢?这里就简要介绍一下makefile中的小技巧。

同时生成两个或多个可执行程序

.PHONY:all//伪目标all
all:myexecl myproc//伪目标all的依赖关系

myproc:myproc.c
	gcc $^ -o $@

myexecl:execle.c
	gcc $^ -o $@

.PHONY:clean
clean:
	rm -f myexecl myproc

make默认只会生成第一个目标文件, 我们让第一个目标文件为一个伪目标

伪目标可以只有依赖关系, 不必须需要依赖方法

只需要让all依赖所有想要生成的可执行程序

makefile就会为了生成这些可执行程序而向下寻找各自目标文件, 依赖关系与依赖方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值