makefile
分析以下的makefile文件,并回答以下问题。
CC = gcc
OPTIONS = -x04 –o
OBJECTS = main.o input.o compute.o
SOURCES = main.c input.c compute.c
HEADERS = main.h input.c compute.h
#问题一:以上部分有什么意义
power:main.c $(OBJECTS)
$(CC) $(OPTIONS) power $(OBJECTS) –lm
#问题二:上一句命令有什么意义
main.o:main.c $(HEADERS)
input.o:input.c input.h
compute.o:compute.c compute.h
all.tar:$(SOUCES) $(HEADERS) makefile
tar -cvf $(SOURCES) $(headers) makefile > all.tar
#问题三:上一句命令有什么意义
clean:
rm *.o
#问题四:如何通过make执行clean的操作(命令格式)
------解决方案--------------------分析以下的makefile文件,并回答以下问题。
CC = gcc
OPTIONS = -x04 –o
OBJECTS = main.o input.o compute.o
SOURCES = main.c input.c compute.c
HEADERS = main.h input.c compute.h
#问题一:以上部分有什么意义
上面这些就是一些变量赋值,意义在于看起来简洁明了,以后修改起来也方便,所谓的模块化在这里有点体现。
power:main.c $(OBJECTS)
$(CC) $(OPTIONS) power $(OBJECTS) –lm
#问题二:上一句命令有什么意义
这句本身就是要编译出结果了,意义与上面的类似,就是使用到了变量,以后的修改会简单很多,看起来也比较清晰。
main.o:main.c $(HEADERS)
input.o:input.c input.h
compute.o:compute.c compute.h
all.tar:$(SOUCES) $(HEADERS) makefile
tar -cvf $(SOURCES) $(headers) makefile > all.tar
#问题三:上一句命令有什么意义
这么多意义,这几句的意义在于对每个小模块都单独生成了.o文件,这样如果一个文件改变时,只会重新编译这个文件对应的.o和重新链接主程序。 后面的all.tar这个目标是为了打包这个程序的源代码到all.tar,方便备份源代码。
clean:
rm *.o
#问题四:如何通过make执行clean的操作(命令格式)
make clean
这个是作业? 意义这么多的作业。。。。