,,,,,,,,之前我们学习了makefile中的变量及函数的相关语法知识,那么我们今天就来以实际需求为例来进行实际编写。实战需求:
,,,,,,,,那么在进行今天的makefile编写之前,我们还需要了解下几个知识点:
,,,,,,,,其中的关键技巧:
,,,,,,,,我们来看看规则中的模式替换(目录结构),如下
,,,,,,,,看看编译规则的依赖,如下
,,,,,,,,下来我们来看看具体的makefile是怎样编写的,还是以之前的那三个c文件为源文件。
CC :=, gcc MKDIR :=mkdir RM :=RM 射频 DIR_OBJS :=obj DIR_TARGET :=目标 DIRS :=, (DIR_OBJS), (DIR_TARGET)美元 TARGET :=, (DIR_TARGET)/hello-makefile.out美元 #,main.c func.c  const.c SRCS :=,美元(wildcard * . c) #,main.o func.o  const.o OBJS :=,美元(src: c=. o) #,obj/main.o obj/func.o obj/const.o OBJS :=,美元(addprefix (DIR_OBJS)/美元,美元(obj)) .PHONY : rebuild clean 所有 $(目标),:,(DIRS), (obj)美元 ,,,(CC),美元-o @ 美元(obj) ,,,@echo “Target File ==祝辞,@"美元; $ (DIRS),: ,,,(MKDIR), @美元 $ (DIR_OBJS)/% .o : % . c ,,,ifeq (美元(调试),真的) ,,,,,,,(CC),美元-o @ 美元;-g -c $ ^ ,,, ,,,,,,,(CC),美元-o @ 美元;-c $ ^ ,,endif rebuild : clean 所有 all : $(目标) clean : ,,,(RM)美元,美元(DIRS)
,,,,,,,,我们来看看编译效果
,,,,,,,,我们看到已经正确执行了,在当前目录下自动生成两个文件夹objs 目标。在obj文件夹里生成三个. o文件,在目标文件夹中生成hello-makefile。从文件,执行这个可执行文件,结果也是我们之前定义的。下来我们来看看能不能定义调试版的程序,这时便要用到一个命令了<强> >强,它用于来查看程序是否为调试版。下来我们来看看结果,图一为普通版的,图b为调试版的
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,图一个普通版
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,图b调试版
,,,,,,,,我们看到调试版本相对于普通版来说,多了一些东西,比如我们在里面写的printf语句,而且多了函数调用的语句。普通版则是只执行程序就OK了。通过今天的综合示例的编写,总结如下:
,,,,,,,,