路径搜索的综合示例(十三)

  

,,,,,,,,我们在前面学习了makefile中的路径搜索,那么我们今天就来实战演练下。需求分析:

,,,,,,,,我们来看看这种项目的类型,如下

路径搜索的综合示例(十三)

,,,,,,,,那么我们需要的工具原料有:。这里面的关键技巧有:。下来我们来看看编译规则的依赖,如下图所示

路径搜索的综合示例(十三)

,,,,,,,,下来我们来看看makefile怎么写,src和公司文件夹还是之前的

.PHONY : all  clean 重建      DIR_BUILD :=,构建   DIR_SRC :=src   DIR_INC :=公司      TYPE_INC :=. h   TYPE_SRC :=. c   TYPE_OBJ :=. o      CC :=gcc   CFLAGS :=,小姐;$ (DIR_INC)   ifeq (美元(调试),真的)   CFLAGS  +=- g   endif      MKDIR :=mkdir   RM :=RM 射频      APP :=, (DIR_BUILD)/app.out美元   HDRS :=,美元(wildcard  (DIR_INC)/*美元(TYPE_INC))   HDRS :=, $ (notdir  $ (HDRS))   OBJS :=,美元(wildcard  (DIR_SRC)/*美元(TYPE_SRC))   OBJS :=, $ (obj: $ (TYPE_SRC)=$ (TYPE_OBJ))   OBJS :=,美元(patsubst  $ (DIR_SRC)/%, $ (DIR_BUILD)/%,美元(obj))      vpath  % $ (TYPE_INC),美元(DIR_INC)   vpath  % $ (TYPE_SRC),美元(DIR_SRC)      时间:all  (DIR_BUILD),美元(应用)   ,,,@echo “Target  File ==祝辞,美元(APP)“;      $ (DIR_BUILD),:   ,,,(MKDIR), @美元      $(应用程序),:美元(obj)   ,,,(CC),美元-o  $ @  $ ^      (DIR_BUILD)/% (TYPE_OBJ)美元,:,% (TYPE_SRC),美元(使用hdr拍摄)   ,,,(CC)美元,美元(CFLAGS), -o  @ 美元;-c  $ & lt;      clean :   ,,,(RM), (DIR_BUILD)美元      rebuild :   ,,,(使)美元,干净   ,,,(使)美元,所有

,,,,,,,,我们看到变量使用hdr拍摄是先进入到公司的文件夹下获取到所需的. h头文件,然后再经过notdir去除掉它的路径名。我们利用TYPE_XXX来定义相应的头文件(或源文件或目标文件),这样做是为了让这个makefile具有更好的移植性。利用vpath来指定相应的路径。通过调试宏判断它是否为调试版本。下来我们先来看看它是否能正常工作。

路径搜索的综合示例(十三)

,,,,,,,,我们看到它已经正确工作了,并且在构建文件夹下生产相应的app.out以及. o文件,原公司和src文件夹并没有被污染。这便达到了我们的要求了,如果是换一个类似的项目(包含有. h的头文件库和C的源文件库),我们也能直接拿去这个makefile进行使用,如果是c++项目,那么我们换个g++编译器就可以正常工作。但是有个小问题,就是如果其中有一个头文件改动,整个项目就必须全部编译。我们就得思考了:对于规则较小的项目,我们在makefile中是否也需要使用自动生成依赖关系的解决方案呢?如果使用自动生成依赖关系的解决方案,那么整个的makefile代码的编写就相当复杂了。我们究竟该如何做呢?如果对于较小的项目,我们就不必使用自动生成依赖关系,因为此时不但是makefile的编写比较复杂,而且不利用后期的维护。

,,,,,,,,通过对路径搜索的综合开发的学习,总结如下:


,,,,,,,,

路径搜索的综合示例(十三)