makefile文件和子目录

    平常使用小项目的时候,一般就把源文件,头文件放在makefile的同一目录进行编译,但是对于大型的项目,我们会将构成一个函数库的几个文件从主文件中分离出来,并转存到子目录中。

    有两种方法,这里我只讲我实现的方法。

    各个文件的摆放如下图所示:

主目录中:



子目录(mylibD)中:



    首先在子目录中编写makefiles文件,该文件的作用是用来编译该子目录下的文件,并保存到一个函数库中,再将该库文件复制到上一级主目录当中。

    本文示例将b.o c.o放入函数库mylib.a当中,子目录中的makefiles应该如下编写:

CC=gcc

INCLUDE=.

CFLAGS=-o -Wall -ansi

mylib=lib.a


$(mylib): $(mylib)(b.o) $(mylib)(c.o)
	(cp $(mylib) ../)
b.o:b.h
c.o:b.h c.h


     然后在主目录中编写makefiles文件,该文件包含一条用于制作函数库的规则,该规则会调用上文所说的子目录中的makefiles文件。

    语句是:

   $(mylib):
        (cd mylibD;$(MAKE))

  完整的makefiles文件代码

all:mytest

CC=gcc

INCLUDE=.

CFLAGS=-o -Wall -ansi

mylib=lib.a



mytest:main.o a.c $(mylib)
	$(CC) -o mytest main.o a.c $(mylib)

$(mylib): 
	(cd mylibD;$(MAKE))
main.o:main.c a.h


clean:
	-rm *.o $(mylib)

如此一来就可以只需要make主目录的makefiles就可以完成程序的编译!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值