重拾makefile 概述

执行make时以下几种文件会被重新编译:

1.所有的源文件没有被编译过,则对各个 C源文件进行编译并进行链接,生成最后的可执行
程序; 
2.每一个在上次执行make之后修改过的C源代码文件在本次执行make时将会被重新编
译;
3.头文件在上一次执行 make 之后被修改。则所有包含此头文件的 C 源文件在本次执
make 时将会被重新编译。


一个简单的 Makefile基本格式: 
TARGET... : PREREQUISITES... 
COMMAND 
... 
...  

注意:每一个命令行必须以[Tab]字符开始,
[Tab]字符告诉 make 此行是一个命令行。make 按照命令完成相应的动作。这也是书写
Makefile中容易产生,而且比较隐蔽的错误。


.o文件的更新:

1.目标.o 文件不存在,使用其描述规则创建它; 
2.目标.o 文件存在,目标.o 文件所依赖的.c 源文件、 .h 文件中的任何一个比目标.o 文件“更
新”(在上一次 make之后被修改)。则根据规则重新编译生成它; 
3.目标.o 文件存在,目标.o 文件比它的任何一个依赖文件(的.c 源文件、.h 文件)“更新”
(它的依赖文件在上一次 make之后没有被修改) ,则什么也不做。


目标文件的更新:

1.目标文件“edit”不存在,则执行规则创建目标“edit”。 
2.目标文件“edit”存在,其依赖文件中有一个或者多个文件比它“更新”,则根据规则重新
链接生成“edit”。 
3.目标文件“edit”存在,它比它的任何一个依赖文件都“更新”,则什么也不做。


使用一个变量“objects”
“OBJECTS”、“objs”、“OBJS”、“obj”或者“OBJ”来作为所有的.o 文件的.列表的替代.

        书写规则建议的方式是:单目标,多依赖。就是说尽量要做到一个规则中只存在一个目标文件,
可有多个依赖文件。尽量避免多目标,单依赖的方式。

.PHONY : clean 
clean : 
-rm edit $(objects) 

1. 通过“.PHONY”特殊目标将“clean”目标声明为伪目标。防
止当磁盘上存在一个名为“clean”文件时,“clean”所在规则的命令无法执行
2. 在命令行之前使用“-” ,意思是忽略命令“rm”的执行错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值