Ubuntu下用glade和GTK+开发C语言界面程序(三)——学习make的用法
makefile的规则
target ... : prerequisites ... command ... ...target可以是一个object file(目标文件),也可以是一个执行文件,还可以是一个label。
一个简单的示例
edit : main.o kbd.o command.o display.o insert.o search.o files.o utils.o cc -o edit main.o kbd.o command.o display.o insert.o search.o files.o utils.o main.o : main.c defs.h cc -c main.c kbd.o : kbd.c defs.h command.h cc -c kbd.c command.o : command.c defs.h command.h cc -c command.c display.o : display.c defs.h buffer.h cc -c display.c insert.o : insert.c defs.h buffer.h cc -c insert.c search.o : search.c defs.h buffer.h cc -c search.c files.o : files.c defs.h buffer.h command.h cc -c files.c utils.o : utils.c defs.h cc -c utils.c clean : rm edit main.o kbd.o command.o display.o insert.o search.o files.o utils.o将上面内容保存为文件名为“makefile”或者“Makefile”的文件中,直接到命令行中进入这个文件的目录中,执行make命令,即可生成所需要的可执行文件edit,如果要删除执行文件和所有的中间文件,一个简单的make clean 命令即可。
make的工作方式
makefile中使用变量
objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.o那么我们在makefile中就可以以"$(objects)"的方式来使用这个变量了。于是makefile就可以改为下面的方式:
objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.o edit : $(objects) cc -o edit $(objects) main.o : main.c defs.h cc -c main.c kbd.o : kbd.c defs.h command.h cc -c kbd.c command.o : command.c defs.h command.h cc -c command.c display.o : display.c defs.h buffer.h cc -c display.c insert.o : insert.c defs.h buffer.h cc -c insert.c search.o : search.c defs.h buffer.h cc -c search.c files.o : files.c defs.h buffer.h command.h cc -c files.c utils.o : utils.c defs.h cc -c utils.c clean : rm edit $(objects)这样我们修改[.o]文件的时候只需要简单的在变量objects中修改就可以了。
清空文件目标的规则
clean: rm edit $(objects)更稳健的方式如下:
.PHONY : clean clean : -rm edit $(objects).PHONY意思表示clean是一个"伪目标"。在rm命令前面加了一个减号的意思为,也许某些文件出现问题,但不用管,继续做后面的事,当然,clean规则一般都是放在makefile的文件的最后,这也是个不成文的规则。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。