Makefile学习笔记(一)

这篇博客介绍了Makefile在程序编译和链接中的作用,详细阐述了Makefile的规则、变量使用以及make的自动推导功能。通过实例展示了如何利用变量简化Makefile中的重复内容,并解释了清理目标文件的规则。同时提到了Makefile中的‘.PHONY’伪目标,确保清理操作的顺利进行。
摘要由CSDN通过智能技术生成

关于程序的编译和链接

一般针对于C、C++而言,第一步是把源文件编译成中间代码文件,Windows下面的中间代码文件的后缀是.obj文件(Object File),Unix中间代码文件的后缀是.o。这个步骤称为编译(compile)。下一步就是链接了,链接就是把所有的中间代码文件合起来生成可执行文件

头文件中放声明,.c和.cpp(源文件)中放定义

一般来说每个源文件都应对应一个中间代码文件

链接时,主要是在链接整个工程文件的函数和全局变量

Makefile的规则

target(目标文件):prerequisites(生成target所需要的的文件或者目标)
[Tab]command(命令之前一定要有tab键开头)

反斜杠/是换行符的意思,为了方便阅读

makefile的文件名可以命名为“Makefile” or “makefile”。首字母大小写都可以,但是后面的必须小写。

Makefile中的变量

例:

main : main.o     source_1.o    source_2.o/
source_3.o

gcc -o main    main.o     source_1.o    source_2.o/
source_3.o

这里的.o文件和目标文件重复了两次,如果在比较大的项目里面,这种情况1重复了许多次,而当我们哪一次需要修改其中某一个值的时候,我们需要一个一个的去改他们,就很不方便!所有这里就有了变量的用武之地了。如下:

声明一个变量叫variable,下面开始定义:

variable = main.o     source_1.o    source_2.o/
source_3.o

于是我们就可以很方便的把上面那个例子改为:

main : $(variable)

gcc -o main    $(variable)

简单明了~

make自动推导功能

make只要看到[.o]文件之后,他就能自动推导出[.c]文件是[.o]文件的依耐文件。而且gcc -c *.c命令也会自动的被推导出来。这是Makefile的"隐晦规则"

清空目标文件的规则

也许会有如下命令:

clean:
[tab]rm main  $(variable) #清空.o文件和可执行文件

此段还可以加以完善:

.PHONY:clean
clean : 
[tab]-rm main    $(variable)

这里插入一点细节:代码中间的空格和空行不会对程序功能带来影响
回到前面的,.PHONY (phony adj,假的)
意思是代表clean是一个“伪目标”。后面的rm前面加一个减号原因是,当某些文件出现了问题,会跳过这个问题,不理睬继续执行后面的内容。clean不能放在开头,因为如果放在开头的话makefile会认为clean就是默认目标,意思就是程序整个功能变成了“清空目标文件”,第一个目标永远是整个makefile文件最终的目标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思识己

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值