Makefile 编译示例:观察文件修改后的编译行为
本题共包含七个源文件:主函数 main_test.c、加法头函数 add.h、int 类型加法函数 add_int.c、float 类型加法函数 add_float.c、减法头函数 sub.h、int 类型减法函数 sub_int.c、float 类型减法函数 sub_float.c。请编辑 makefile 文件来完成对该程序的编译功能。然后修改主函数 main_test.c 里的 x , y, a, b 的值,再次执行 make 命令,观察哪些程序被重新编译了,进行适当说明。要求:用 cat 命令显示 makefile 文件的内容并截图,两次运行 make 命令的结果并截图。
makefile 文件内容:
CC=gcc
CFLAGS=-Wall
all: main_test
main_test: main_test.o add_int.o add_float.o sub_int.o sub_float.o
$(CC) $(CFLAGS) -o main_test main_test.o add_int.o add_float.o sub_int.o sub_float.o
main_test.o: main_test.c add.h sub.h
$(CC) $(CFLAGS) -c main_test.c
add_int.o: add_int.c add.h
$(CC) $(CFLAGS) -c add_int.c
add_float.o: add_float.c add.h
$(CC) $(CFLAGS) -c add_float.c
sub_int.o: sub_int.c sub.h
$(CC) $(CFLAGS) -c sub_int.c
sub_float.o: sub_float.c sub.h
$(CC) $(CFLAGS) -c sub_float.c
clean:
rm -f main_test *.o
第一次运行 make 命令结果截图:

第二次运行 make 命令结果截图:

根据 makefile 文件的规则,当源文件或头文件有修改时,对应的目标文件和可执行文件需要重新编译。因此,第二次运行 make 命令时,只有 main_test.o 和 main_test 被重新编译了,其他的目标文件没有变化,不需要重新编译。
原文地址: https://www.cveoy.top/t/topic/nUVZ 著作权归作者所有。请勿转载和采集!