首页 > 其他 > 详细

自己写Makefile编译当前文件夹下子文件夹中的文件

时间:2014-03-05 19:01:08      阅读:1007      评论:0      收藏:0      [点我收藏+]

场景说明:

当前文件夹下有Makefile   子文件夹test1  test2


test1文件夹下有:Makefile main1.c

test2文件夹下有:Makefile main2.c

我们的目标是编译出main1  main2  2个可执行文件

先写main1.c测试代码

int main(void)

{

return 0;

}

main2.c和main1.c一样


下边写父文件夹中的Makefile

SUBDIRS = tes1 test2 

.PHONY:default all clean $(SUBDIRS)


default:all


all clean:

$(MAKE) $(SUBDIRS)  TARGET=$@

$(SUBDIRS):

$(MAKE) -C $@ $(TARGET)  //这一步是跳转到子目录并执行子目录中的Makefile


子文件夹下的Makefile


CC = gcc

BIN = main1 //设置编译输出的可执行文件

SRCS = $(wildcard    *.c)//获得当前目录下的所有.c文件

OBJS = $(SRCS:%.c:%.o)//把后缀为.c文件重命名为.o文件

.PHONY:all clean print  //all clean承接父文件Makefile中的TARGET


all:print $(BIN)


print:

echo "------- test1 dir make begin ----------"

$(BIN):$(OBJS)

$(CC) $^ -o $@

%.o:%.c  //模式匹配

$(CC) -c $^ -o $@

clean:

rm -f $(BIN) $(OBJS)


test2文件夹下的Makefile和上边的类似


下边就可以在父文件夹中执行make就可以编译test1  和 test2文件夹下的文件了


自己写Makefile编译当前文件夹下子文件夹中的文件,布布扣,bubuko.com

自己写Makefile编译当前文件夹下子文件夹中的文件

原文:http://blog.csdn.net/u012554768/article/details/20544729

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!