1. 当VPATH
和vpath
同时出现时,make会如何处理?
结论:
1) make首先在当前文件夹中搜索需要的文件;
2)如果失败:make优先在vpath
指定的文件夹中搜索目标文件,当vapth
搜索失败时,转而搜索VPATH
指定的文件夹
2. 当使用vpath
对同一个Pattern
指定多个文件夹时,make会如何处理?
结论:
1)make首先在当前文件夹中搜索需要的文件
2)如果失败:make自上而下的顺序搜索vpath
指定的文件夹,当找到目标文件,搜索结束
3. 通过VPATH
指定搜索路径后,make如何决定目标文件的最终位置?
结论:
1)当app.out
完全不存在时:make在当前文件夹下创建app.out
2)当src
文件夹中存在app.out
时:所有目标和依赖新旧关系不变,make不会重新创建app.out
;当依赖文件被更新时,make在当前文件夹下创建app.out
4. 当依赖改变时,如何使得src
下的app.out
被更新?
解决方案:使用GPATH
特殊变量指定目标文件夹GPATH=src
1)当app.out
完成不存在时,make默认在当前文件夹创建app.out
2)当app.out
存在于src
,且依赖文件被更新时,make在src
中创建app.out
5. 工程项目中的几点建议
- 尽量使用
vpath
为不同文件指定搜索路径 - 不要在源码文件夹中生成目标文件
- 为编译得到的结果创建独立的文件夹
- 避免
VPATH
和GPATH
特殊变量的使用
声明:此文章为本人在学习狄泰软件学院《十二月提升计划》所做的笔记,参考书籍《专业嵌入式软件开发》——李云,文章中包含狄泰软件资料内容和《专业嵌入式软件开发》资料内容,一切版权归狄泰软件和《专业嵌入式软件开发》所有!