当前位置: 代码迷 >> 综合 >> Makefile学习 -6 原理
  详细解决方案

Makefile学习 -6 原理

热度:75   发布时间:2024-02-29 13:06:22.0

目标:

为何使用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。