变量与函数的综合示例(九)

  

,,,,,,,,之前我们学习了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了。通过今天的综合示例的编写,总结如下:


,,,,,,,,

变量与函数的综合示例(九)