会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力
一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率
make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法
make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建
我们先创建一个test.c文件,并在里面编写一些代码
然后我们再创建一个makefile/Makfile,大小写都是可以的,然后可以编写这样的指令
随后我们保存退出,在命令行中输入make指令
他直接执行了这段指令,再输入这段指令
同样也能执行这段指令? ??
makefile文件写好之后, 当我们在命令行中输入make指令的时候,对应的make程序就会在当前目录下找makefile这个文件,并读取makefile中的内容,根据依赖关系可以知道我们要通过依赖方法形成目标文件
#include <stdio.h>
int main()
{
printf("hello Makefile!\n");
return 0;
}
Makefile文件
hello:hello.o
gcc hello.o -o hello
hello.o:hello.s
gcc -c hello.s -o hello.o
hello.s:hello.i
gcc -S hello.i -o hello.s
hello.i:hello.c
gcc -E hello.c -o hello.i
.PHONY:clean
clean:
rm -f hello.i hello.s hello.o hello
make是如何工作的,在默认的方式下,也就是我们只输入make命令。那么,
工程是需要被清理的