很多时候我们可能会遇到这样的情况:要编译多个目录下的代码,然后要将中间文件和执行文件分别放到不同的文件夹下面。好吧,贴图的排版第一次用,将就看一下。下面的图是我练习用的一个项目文件结构图。其中bin用来存放最后生成的可执行文件,f1,f2分别是用到的两个模块(函数),而且两个文件夹下分别对应自己的Makefile编译文件,include包含的是头文件,main.c包含的是主函数,其对应文件夹下也有一个Makefile文件,而obj是用来存放中间文件。然后是根目录下有一个全局的Makefile编译文件。
我们通过在根目录下,键入make,系统会自动到main,f1,f2文件夹下去编译文件,最后将生成的可执行文件放到myapp下面。
下面我从根目录开始,重新回忆并记录下实现的过程。首先看下根目录下的Makefile。
#设置编译器
CC=gcc
#参考资料http://www.cnblogs.com/Shirlies/p/4282182.html
#debug文件夹里的makefile文件需要最后执行,
#所以这里需要执行的子目录要排除debug文件夹,
#这里使用awk排除了debug文件夹,读取剩下的文件夹
#SUBDIRS=$(shell ls -l | grep ^d | awk '{if($$9 !&#