Makefile学习笔记

   在进行大项目开发的时候,生成程序的依赖文件比较多,此时用gcc编译器一个个去编译比较繁琐,Makefile可以有效地提升编译地效率。

        我把我学习Mikefile的过程分为四层,便于理解。

一、第一层(显示规则)

1、创建一个Makefile文件

        以 vscode 远程链接 Linux 系统为例 ,可以在终端使用 touch Makefile 命令创建一个Makefile文件

        也可以在文件里直接创建

2、Makefile的语法规则

        Makefile是一门全新的脚本文件,所以在里面执行命令和在终端执行命令是没有区别的。

        

1、目标文件:即要生成的文件。如果目标文件的更新时间晚于依赖文件更新时间,则说明依赖文件没有改动,目标文件不需要重新编译。否则会进行重新编译并更新目标文件。(默认情况下Makefile的第一个目标为终极目标。)
2、依赖文件:即目标文件由哪些文件生成。
3、命令:即通过执行命令由依赖文件生成目标文件。注意每条命令之前必须有一个tab保持缩进,这是语法要求

       

        

        执行该Makefile脚本,效果如下

 3、伪目标    

伪目标只是一个标签,clean是个伪目标没有依赖文件,只有用make来调用时才会执行
当目录下有与make 命令 同名的文件时 执行make 命令就会出现错误。
解决办法就是使用伪目标

效果如下,可以看到执行 make clean 之后 hello.o 被删除了

二、第二层(变量)

1、"="是最普通的等号,在Makefile中容易搞错赋值等号,使用 “=”进行赋值,变量的值是整个Makefile中最后被指定的值。

        比如,在这个目录下有多个依赖文件,我们可以用一个变量来替代这些依赖文件。同时,也可以用变量来代替命令和目标文件

注意:在用变量替换之后,只用变量的格式为  $(变量)  。

三、第三层(隐含规则)

%.c和%.o 代表任意的一个 .c 和 .o 文件,*.c 和 *.o 代表所有的 .c 和 .o 文件

可以用%.c 和 %.o 对部分目标文件或者依赖文件进行替换。

四、第四层(通配符)

$^ 表示所有的依赖文件
$@ 表示生成的目标文件
$< 代表第一个依赖文件

在写makefile的过程中 可以使用通配符替换命令中的文件,使代码更简洁,移植性和效率更高。

五、总结

此文章用于初步学习记录,用于后续的复习,欢迎大家提出建议

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值