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特殊变量的使用
声明:此文章为本人在学习狄泰软件学院《十二月提升计划》所做的笔记,参考书籍《专业嵌入式软件开发》——李云,文章中包含狄泰软件资料内容和《专业嵌入式软件开发》资料内容,一切版权归狄泰软件和《专业嵌入式软件开发》所有!