Linux操作——简单Makefile文件的编写

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

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

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

II、在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时的效率。

III、测试结果

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、如果依赖文件不存在,则会去找相应的规则生成依赖文件

猜你喜欢

转载自blog.csdn.net/ypjsdtd/article/details/84787109