第十七篇 make的路径搜索综合实践

 本节我们编写路径搜索相关的makefile,具体需求如下:
 1、工程项目中不希望源码文件夹在编译时被改动(只读文件夹)。
 2、在编译时自动创建文件夹(build)用于存放编译结果。
 3、编译过程中能够自动搜索需要的文件
 4、makefile易于扩展,能够复用于相同类型的项目
 5、支持调试版本的编译选项
 
项目文件组织如下:
 
 
需要用到的三个工具原料如下:
1、$(wildcard $(DIR)/_pattern)
  获取DIR文件夹中满足_pattern的文件。
2、$(notdir _names)
  去除_names中每一个文件名的路径前缀
3、$(patsubst _pattern, replacement, _text)
  将_text中符合_pattern的部分替换为replacement
 
关键技巧如下:
1、自动获取源文件列表(函数调用)
  SRCS := $(wildcard src/*.c)
2、根据源文件列表获取目标文件列表(变量的值替换)
  OBJS := $(SRCS:.c=.o)
3、替换每一个目标文件的路径前缀(函数调用)
  OBJS := $(patsubst src/%, build/%, $(OBJS))
 
makefile程序如下:
 
 
执行make,结果如下所示:
 
 
程序的39行中,我们让build下的目标文件直接依赖于所有的头文件,规模较小的项目没有必要使用自动生成依赖关系的方案。规模较小的项目让目标文件直接依赖于头文件会更易于维护。
 
 
参考如下:
   狄泰软件教程及课件
   gun make手册
   专业嵌入式软件开发
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





原文地址:https://www.cnblogs.com/wanmeishenghuo/p/8430331.html