makefile中所有的目标都会执行吗
时间: 2024-02-24 16:55:55 浏览: 153
Makefile中文手册.zip
不是所有的目标都会执行,只有目标的依赖项有变化,或者目标文件不存在时,才会执行对应的目标。
Makefile是根据目标文件和依赖项之间的关系来确定哪些目标需要重新生成的。当你执行`make`命令时,make会检查每个目标文件的时间戳,如果目标文件的时间戳比依赖项的时间戳更旧,或者目标文件不存在,则需要重新生成目标文件。
例如,在下面的Makefile中,如果你执行`make all`命令,只有在hello.c或world.c文件被修改,或hello.o或world.o文件不存在时,才会重新编译对应的目标文件。
```
all: hello world
hello: hello.o
gcc -o hello hello.o
world: world.o
gcc -o world world.o
hello.o: hello.c
gcc -c hello.c
world.o: world.c
gcc -c world.c
```
如果你执行`make clean`命令,无论目标文件的时间戳如何,都会执行`clean`规则中的命令,即删除所有生成的目标文件和最终程序。
因此,在使用Makefile时,你需要清楚每个目标文件的依赖项,并确保Makefile中的规则定义正确,以避免不必要的重新编译。
阅读全文