简单Makefile文件的编写

01
在eg目录下新建“hello.c”文件

//hello.c文件
#include <stdio.h>

int main()
{		
	printf ("Hello World!\n");
	
	return 0;
}	

02
在hello目录下新建“Makefile”文件

#文件名:makefile 或者 Makefile,再无其它命名。
hello:hello.c
	gcc hello.c -o hello
	
clean:
	rm -rf hello	

hello:需要生成的目标文件
main.c:生成目标文件所需要的依赖文件
(Tab)gcc main.c -o hello :生成目标文件的编译规则命令行。
此命令行前必须加一个键

每个Makefile中都应该写一个清空目标文件(.o和执行文件)的规则,
这既便于重编译,也很利于保持文件的清洁。

PHONY: clean 表示clean是一个“伪目标”
而在rm命令前面加了一个小减号的意思就是,也许某些文件出现问题,但不要管,继续做后面的事。

一般情况下,一个伪目标不作为另一个目标的依赖。所谓伪目标就是这样一个目标,它不代表一个真正的文件名,在执行make时可以指定这个目标来执行其所在规则定义的命令,有时我们将一个伪目标称为标签。当一个伪目标没有作为任何目标的依赖时,我们只能通过make命令来明确指定它为make的终极目标,来执行它所在规则所定义的命令。

以clean举例,如果make完成后,自己另外定义一个名叫clean的文件,
再执行make clean时,将不会执行rm命令。

使用PHONY: clean的原因:
a、避免在makefile中定义的只执行命令的目标和工作目录下的实际文件出现名字冲突,
b、提升执行makefile时的效率。

03
测试结果

root@lj:/eg# ls
hello.c  Makefile
root@lj:/eg# make
gcc hello.c -o hello
root@lj:/eg# ls
hello  hello.c  Makefile
root@lj:/eg# ./hello
Hello World!
root@lj:/eg# make clean
rm -rf hello
root@lj:/eg# ls
hello.c  Makefile

运行:执行make命令,执行命令的时候可以加“-n”,代表不真正执行命令,只是预览要执行的命令
clean:清除相关文件
执行规则:
a、如果目标文件的时间早于依赖文件,则重新生成目标文件
b、如果依赖文件不存在,则会去找相应的规则生成依赖文件

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值