Makefile工程实践
Makefile
1. 什么是Makefile
Linux下面没有类型VC等开发环境,
gcc -o hello helloworld.c 得到可执行文件 hello
一个项目中,要编译的文件很多,不可能都手动去调用gcc来一个一个编译
这时候Makefile用派上用场了,Makefile就定义了我们怎么去编译这个程序,描述了整个工程的编译、链接规则;
让软件项目自动化编译。
最简单的Makefile
hello:helloworld.c 我们称helloworld.c为依赖,hello为目标
gcc -o hello helloworld.c 这是命令规则
clean:
rm hello
程序一般是先编译成目标文件,目标文件再链接成可执行文件。
所以上面的Makefile可以改为:
hello:helloworld.o
gcc -o hello helloworld.o 把目标文件.o链接生成可执行文件
helloworld.o:helloworld.c
gcc -o helloworld.o -c helloworld.c 添加目标文件.o的生成过程,当一个源文件没有修改的话,是不会重新编译的,工程中一旦源文件多可以节约大量的时间。
clean:
rm hello
2. Makefile的执行过程
当我们执行make的时候,首先到当前目录下去寻找Makefile文件,
3. GUN make工具
make是一个命令工具,它解释了Makefile中的指令(应该说是规则),Makefile中描述了工程中所有文件的编译顺序、规则。Makefile有自己的书写格式、关键字、函数。
而且在Makefile中可以使用shell所提供的任何命令来完成你想要的工作。
make -v查看GUN make工具的版本
Makefile面向依赖的思维,C语言面向过程,C++面向对象,Python一切皆对象,Linux一切皆文件。