目标:
为何使用Makefile
Makefile原理
正文:
为何不用gcc
我们如果要编译main.c、test.c,生成可执行文件main。
可以使用一条gcc命令:
gcc -o main main.c test.c
也可以分步执行:
gcc -c -o main.o main.c
gcc -c -o test.o test.c
gcc -o main main.o test.o
但是如果我们只修改main.c,使用上述方式都会重新编译main.c test.c。对于少量文件无所谓,对于大工程很浪费时间。
Makefile就是解决此问题的:重新编译工程时,比较文件是否修改,如果修改了则重新编译,未修改则不编译。
回顾下Makefile的语法:
目标文件:依赖文件
TAB 命令
Makeilfe判定文件是否修改了是通过判断依赖文件是否比目标文件新,如果依赖文件比目标文件新,认定依赖文件修改过了,则需重新编译。
示例:
#Makefile
main:main.o test.ogcc -o main main.o test.omain.o:main.cgcc -c -o main.o main.c
test.o:test.cgcc -c -o test.o test.c
如果只修改了main.c.
由于main依赖main.o、test.o,需要先生成main.o,test.o。
比较发现main.c比main.o新,重新编译main.o
然后又发现main.o比main新,重新编译生成main。